vue3进阶-----单文件组件

2023-10-31

目录

三.vue3进阶

1.单文件组件

1-1组件定义-重塑经脉,断了?

1-2单文件组件(SFC)-独立日 

1-3Vue-CLI创建项目-锅灶升级

1-4 vuecli选项介绍 

1-5 VueCLI创建项目-风云再起

index.html

main.js 作用

ES6 导入 导出

 解决跨域之“Vue-Cli配置跨域代理“

1-6Vite创建项目-官方推荐

 1-7启动流程&入口文件


三.vue3进阶

1.单文件组件

1-1组件定义-重塑经脉,断了?

组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构:

 


<body>
    <div id="box">
        <kerwin-navbar></kerwin-navbar>
        <kerwin-sidebar></kerwin-sidebar>
        <kerwin-global-button></kerwin-global-button>

    </div>
    <script>
        //扩展html元素, 封装可重用的代码
        var obj = {
            data() {
                return {
                }
            },

        }
        var app = Vue.createApp(obj)
        //定义全局组件
        app.component("kerwin-navbar", {
            //模板
            template: `
                <nav style="background:yellow;">
                    <ul>
                       <li v-for="item in datalist">
                        {{item}}
                       </li>    
                    </ul>
                    <kerwin-global-button></kerwin-global-button>
                    
                </nav>
            `,
            data() {
                return {
                    datalist: ["首页", "新闻", "产品"]
                }
            }
        })

        app.component("kerwin-global-button", {
            template: `<div >
                        <button style="background:blue;">全局</button>    
            </div>`
        })

        app.component("kerwin-sidebar", {
            template: `
                <aside>
                    我是侧边栏
                    <kerwin-global-button></kerwin-global-button>
                    <kerwin-button></kerwin-button>   
                </aside>
            `,
            //局部组件定义
            components: {
                "kerwin-button": {
                    template: `<div >
                        <button style="background:red;">联系</button>    
                    </div>`,
                    // watch ,computed,methods
                }
            }
        })
        app.mount("#box")
    </script>
</body>

 组件带来的好处(1)结构清晰(2)复用性增加(3)封装性

当前写法的吐槽:(1)dom高亮和代码提示没有(2)css只能行内

1-2单文件组件(SFC)-独立日 

Vue的单文件组件(即*.vue文件,英文Single-FileComponent,简称SFC)是一种特殊的文件格式,使我们能够将一个Vue组件的模板、逻辑与样式封装在单个文件中。下面是一个单文件组件的示例:

<script>
export default {
  data() {
    return {
      count: 0
    }
  }
}
</script>

<template>
  <button @click="count++">Count is: {{ count }}</button>
</template>

<style scoped>
button {
  font-weight: bold;
}
</style>

如你所见,Vue的单文件组件是网页开发中HTML、CSS和JavaScript三种语言经典组合的自然延伸。

  • 使用熟悉的HTML、CSS和JavaScript语法编写模块化的组件
  • [让本来就强相关的关注点自然内聚]
  • 预编译模板,避免运行时的编译开销
  • [组件作用域的CSS]
  • [在使用组合式API时语法更简单]
  • 通过交叉分析模板和逻辑代码能进行更多编译时优化
  • [更好的IDE支持],提供自动补全和对模板中表达式的类型检查
  • 开箱即用的模块热更新(HMR)支持

1-3Vue-CLI创建项目-锅灶升级

VueCLI是一个基于Vue.js进行快速开发的完整系统,提供:

通过@vue/cli实现的交互式的项目脚手架。

通过@vue/cli+@vue/cli-service-global实现的零配置原型开发。

一个运行时依赖

@vue/cli-service

可升级;

基于webpack构建,并带有合理的默认配置;

可以通过项目内的配置文件进行配置;

可以通过插件进行扩展。

一个丰富的官方插件集合,集成了前端生态中最好的工具。

一套完全图形化的创建和管理Vue.js项目的用户界面。

VueCLI致力于将Vue生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性,无需eject。

下载脚手架

npm install -g @vue/cli
# OR
yarn global add @vue/cli

创建项目

vue create my-project
# OR
vue ui

1-4 vuecli选项介绍 

 

作为学习记录,这里全部选择
Vue CLI v4.5.9
? Please pick a preset: Manually select features
? Check the features needed for your project:
 (*) Choose Vue version
 (*) Babel  //转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 
 (*) TypeScript // TypeScript是一个JavaScript(后缀.js)的超集(后缀.ts)包含并扩展了 JavaScript 的语法,需要被编译输出为 JavaScript在浏览器运行
 (*) Progressive Web App (PWA) Support // 渐进式Web应用程序
 (*) Router	// 路由
 (*) Vuex	// 状态管理(全局变量管理)
 (*) CSS Pre-processors // css预处理器 :sass 和 less 使用较多
 (*) Linter / Formatter // 代码风格检查和格式化 : ESLint + Prettier 使用较多,
 (*) Unit Testing // 单元测试
>(*) E2E Testing // e2e(end to end) 测试                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

 Choose a version of Vue.js that you want to start the project with (Use arrow keys)
> 2.x
  3.x (Preview) 
? Use class-style component syntax? (Y/n) y   // 是否使用babel做转义
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? (Y/n) y // 是否使用class风格的组件语法
? Use history mode for router? (Requires proper server setup for index fallback in production) (Y/n) n // 是否使用history模式(服务端需要配置路由映射),还是默认hash(地址栏有#符号)
? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): //选择css预处理的模式
  Sass/SCSS (with dart-sass)
  Sass/SCSS (with node-sass)
> Less
  Stylus 
? Pick a linter / formatter config: // 选择语法检测规范
  ESLint with error prevention only // 只进行报错提醒 
  ESLint + Airbnb config // 不严谨模式
  ESLint + Standard config // 正常模式
> ESLint + Prettier // 严格模式 使用较多
  TSLint (deprecated) // typescript格式验证工具
? Pick additional lint features: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) Lint on save // 使用较多 建议保存即检测
 ( ) Lint and fix on commit  // 提交才检测,此时可能问题已多,事倍功半   
? Pick a unit testing solution: // 各有各自的长处与短处,开发者需要根据当前项目的需求选择
  Mocha + Chai // Mocha是一个能够运行在Node和浏览器中的多功能的JavaScript测试框架,它让异步测试简单且有趣。Mocha连续地运行测试,并给出灵活而精确的报告,同时能够将错误精确地映射到测试用例上。chai 是一个强大的断言库
> Jest // 是facebook推出的一款测试框架,集成了 Mocha,chai,jsdom,sinon等功能,配置较简单
? Pick an E2E testing solution:
  Cypress (Chrome only) // 新一代ui测试框架,类似于selnium,它基于node js,支持webpack构建。
  Nightwatch (WebDriver-based) // 基于Node.js的端到端(e2e)测试方案,使用W3C WebDriver API,将Web应用测试自动化。它提供了简单的语法,支持使用JavaScript和CSS选择器,来编写运行在Selenium服务器上的端到端测试
> WebdriverIO (WebDriver/DevTools based)  // WebDriverIO 是基于一个基于node的网页自动化测试框架,它封装了 Selenium WebDriver API,可拓展性非常高。相比较原生的Selenium 而言,WebDriverIO 的代码非常的简单易懂,api和方法与jquery相似,非常方便前端上手。同时WebDriverIO 也支持mobile端的测试。 
? Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys) // 选择配置信息存放位置
> In dedicated config files // 独立文件放置,项目会有单独的几件文件
  In package.json // 统一放置放置
? Save this as a preset for future projects? (y/N) y // 是否保存此配置,方便在以后创建项目中选择使用以上配置
------------------------------------------end----------------------------------------------------
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

1-5 VueCLI创建项目-风云再起

index.html

vue来说index.html是一个总的入口文件,vue是单页面应用,挂在id为app的div下然后动态渲染路由模板。 会自动引入main.js

在vue 单文件中  每个vue文件状态不相互影响 样式默认是相互影响的 要是想局部影响加scoped

单页面应用是和多页面应用相对而言的。多页面应用是在每次页面跳转的时候,后台服务器都重新生成一张html页面,首屏时间快(只需要加载一次html),搜索引擎优化效果好(html内容都在),但是切换慢(每次页面切换都需要发出一次http请求)。单页面应用首次加载时会请求一次html,随后的页面渲染都依靠js动态的将当前页面的内容清除掉(原理:js可以感知url的变化),然后将下一个页面的内容挂载到当前页面上(前端实现,不是后端,无http发送时延),首屏慢,搜索引擎优化效果差,但是切换快。

main.js 作用

Vue3main.js 的作用是创建 Vue3 应用,并将其挂载到网页中的指定 HTML 的 DOM 容器上。其中包含的主要方法有

  • createApp

createApp 函数用于创建一个 Vue3 应用对象,可以接受一个根组件作为参数,组件通常是使用 Vue.component 函数创建的。createApp 函数返回的对象包含了挂载应用到 DOM 的方法,以及 Vuex 和 Vue-router 等插件的安装方法。

  • App.vue

App.vue 是 Vue3 应用的主组件,它是一个顶层的组件,负责渲染整个应用的界面。在 App.vue 组件中,可以通过 template 或 render 函数来生成 DOM 结构。

  • 3. mount

mount 函数用于将 Vue3 应用对象挂载到指定的 DOM 容器上,需要接收容器的选择器作为参数。它将根据容器的选择器找到相应的 DOM 元素,并将应用渲染到该元素内。

import  {createApp} from 'vue'
import App from './MyApp.vue'

createApp(App)
.mount('#app')

ES6 导入 导出

(1) 默认导出

export default 输出的东西

(2) 默认导入

// 变量名随意,不需要和导出名相同
import 变量名 from ‘路径/包名’
@import url(路径)

(3) 按需导出

export {
变量名1 : 变量值2,
变量名2: 变量值2
...
}

(4) 按需导入

// 变量名必须和导出的变量名相同
import {变量名} from '路经'

(5)区别
[1] 导出数量

  • 默认导出在一个页面只能导出一个变量;
  • 如果在同一个页面写了多个默认导出,结果是仅将最后一个变量导出了;
  • 按需导出可以导出多个变量;

[2] 变量名

  • 默认导入时的变量名不需要和导出时的变量名相同;
  • 按需导入时的变量名必须和导出时的变量名相同;
     
/*
 Vue
 
 //es6 第一种导入导出
 export default {
    createApp:function(){

    }
 }

 import Vue from 'vue'
 Vue.createApp

 //es6 第二种
  function createApp(){}
  export {createApp}


  import {createApp} from 'vue'
*/

在vue项目中 导入不写相对路径 默认从node_modules 包里去找

 解决跨域之“Vue-Cli配置跨域代理“

只要域名端口协议有一个不同,就是跨域了

当下,最流行的就是前后分离开发项目,也就是前端项目和后端接口,并不在一个域名之下,那么前端项目开发时,去访问后端接口就会存在跨域行为。

解决开发环境的跨域问题
开发环境的跨域

开发环境的跨域,也就是在**vue-cli脚手架环境**下开发启动服务时,我们访问接口所遇到的跨域问题,

vue-cli为我们在本地**开启了一个服务,可以通过这个服务帮我们代理请求**,解决跨域问题

vue-cli的配置文件即**vue.config.js**,这里有我们需要的 代理选项

module.exports = {
  devServer: {
    // 代理配置
    proxy: {
        // 这里的api 表示如果我们的请求地址有/api的时候,就出触发代理机制
        '/api': {
          target: 'http://www.baidu.com', // 我们要代理请求的地址
           // 路径重写
          pathRewrite: {
              // 路径重写  localhost:8888/api/login  => www.baidu.com/api/login
              '^/api': '' // 假设我们想把 localhost:8888/api/login 变成www.baidu.com/login 就需要这么做 
          }
      },
    }
  }
}


1-6Vite创建项目-官方推荐

Vite(法语意为"快速的",发音/vit/,发音同"veet")是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成:

  • 一个开发服务器,它基于原生ES模块提供了丰富的内建功能,如速度快到惊人的模块热更新(HMR)。
  • 一套构建指令,它使用Rollup打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。

Vite意在提供开箱即用的配置,同时它的插件API和JavaScriptAPI带来了高度的可扩展性,并有完整的类型支持。

 创建项目

Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

使用 NPM:

$ npm create vite@latest

使用 Yarn:

$ yarn create vite

使用 PNPM:        

$ pnpm create vite

 1-7启动流程&入口文件

我们知道,在script标签中写js代码,或者使用src引入js文件时,默认不能使用module形式,即不能使用import导入文件,但是我们可以再script标签上加上type=module属性来改变方式。

 使用方法如下: 

//module.js
export default function test(){
  return 'test...'
}
// index.js
import test from './module.js';
console.log(test())

 

// index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  // 方法 1 : 引入module.js,然后在script标签里面调用
  <script type="module">
    import test from './module.js';
    console.log(test())
  </script>
 
  // 方法 2 : 直接引入index.js,使用src引入
  <script type="module" src="./index.js"></script>
 
</body>
</html>

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3进阶-----单文件组件 的相关文章

  • 今天(儒勒·凡尔纳)的 Google 涂鸦是如何运作的?

    相信很多人都已经看过今天的了 2011 02 08 谷歌的涂鸦 http www google com logos verne html 如果涂鸦发生变化 请链接到 CNN 上的文章 http edition cnn com 2011 TE
  • Next.js - 如何使用 Provider 来包装路由并使用 Context 和 Hooks

    我在 create react app 中编写了类似于以下的代码 我想知道 next js 的等效代码 下面的代码是我尝试拥有一个可用于所有页面的全局上下文 提供者包装链接 我没有收到任何错误 问题出在里面about当我期望上下文状态时 页
  • 在 Firefox 中访问全局事件对象

    目标 运行一些函数 ajaxStart 但仅限于由特定事件触发时 代码 loading indicator ajaxStart function if event null if event type hashchange event ty
  • AngularJS 仅在解析时返回两个 http get 请求

    我有一个 Angular 应用程序 在控制器中我需要调用一个发出两个 http get 请求的函数 并且我需要这个函数在解析这些值时返回这些值 我无法在 routeProvider 中解析它们 因为此函数需要在同一控制器中获取值 我展示了控
  • Canvas drawImage 内联 svg 在 Firefox 上不起作用

    这是一个例子 它采用 svg 并将其转换为画布 http jsfiddle net Na6X5 944 http jsfiddle net Na6X5 944 var can document getElementById canvas1
  • Firefox 中的 jQuery 表单提交

    请帮我解决一个问题 我有这个代码 用于通过锚点提交表单
  • 将浮点值转换为灰度十六进制颜色值

    这个问题又快又简单 我有一个二维浮点数组 0 0000000 到 1 0000000 我想将这些数字转换为颜色值 000000 到 ffffff 请注意 我所说的只是灰度值 0 黑色 0 5 中灰色 1 白色 有谁知道如何用 javascr
  • jQuery 插件与小部件

    几个月前 我开始使用 jQuery 插件进行一些实验 我在互联网上找到了一些教程 然后开始整理一些东西 几天前 我需要构建自己的 插件 并回到我的旧项目 当我试图在互联网上找到更多信息时 我偶然发现了这些称为小部件的新 东西 据我了解 我应
  • Draggable 正在阻止触摸事件

    我正在尝试使用拖动来来回移动 div 这部分工作正常 直到 div 具有可滚动内容 由于滚动条 这在桌面上不是问题 但在触摸设备上会出现问题 由于触摸事件与拖动事件冲突 我无法滚动内容 我尝试创建一个条件来检测拖动是否水平方向多于垂直方向
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • 如果重复,则从数组中删除两个值 - JavaScript/jQuery

    我这里有一个数组 var myArr 1 1 2 5 5 7 8 9 9 现在我想删除重复的两个外观 所以想要的结果是not var myArr 1 2 5 7 8 9 but var myArr 2 7 8 基本上我知道如何删除重复项 但
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • SWC with JavaScript:如何处理 CSS 导入以及如何绝对导入?

    TL DR 如何告诉 SWC 编译 React 组件中导入的 CSS 文件 如何告诉 SWC 在测试和 React 组件中编译绝对导入 这是一个最小的可重现示例 https github com janhesters riteway swc
  • 用 JavaScript 改变文本颜色?

    我想在单击按钮时更改标题的颜色 这是我的代码 但它不起作用 我不明白为什么不 var about function init about document getElementById about innerHTML about style
  • 如何使用 HTML5 在画布上绘制心电图监视器?

    我尝试使用canvas html5绘制心电图系统 几乎我即将完成我的波浪正在移动 但不是连续地重复 但我想绘制波浪是从左到右连续移动的 下面的链接是示例 Ex https www youtube com watch v wuwBfSpVEg
  • 地理编码服务与 gMap 搜索之间的差异结果

    我想获取此地址的纬度和经度 Boulevard de la Marne Zone industrielle COULOMMIERS 77120 France 我将 api 添加到我的页面 当我使用 gmaps 时 结果很好 但是当我想通过
  • 在 jQuery 中获取最接近元素的形式

    我编写了这个 js jquery 脚本来检查表单中的所有复选框 它工作得很好 但是这会检查页面上的所有复选框 无论它们是什么表单包装器 这是函数 function toggleCheck state var checkboxes jQuer
  • HighCharts - 两个 Y 轴,一个具有最大值

    我在使用 Highcharts 时遇到问题 我已将右 Y 轴设置为 min 0 和 max 100 它是 但它不起作用并生成 125 百分比 怎么了 http jsfiddle net SdTcU http jsfiddle net SdT
  • 当来自 Mozilla Firefox 和 MS Edge 上的剪贴板时 Alpha 会变成黑色

    我正在使用代码从这里 https stackoverflow com a 15369753 5875416将剪贴板中的图像粘贴到页面上 它在所有浏览器 Chrome Firefox Edge 和 Opera 中都能正常工作 问题是 当图像是
  • localStorage 获取 NULL?

    我不知道为什么 因为我之前已经这样做过并且工作正常 我认为这可能是因为浏览器问题 错误 localStorage setItem foo bar alert localStorage getItem foo 我使用的是 Firefox 3

随机推荐

  • VS2013及QT安装

    参考如下链接 QT下载 QT下载 VS2013及QT安装 https jingyan baidu com article e8cdb32b132cd637052bade4 html
  • egg.js + mysql + windows 踩坑全纪录

    资料 egg js文档 https www eggjs org zh CN intro quickstart 背景 前面的都很简单 按照官方文档配置即可 全部调通以后 开始接触数据库mysql 因为米有后台开发背景 所以需要从头开始 步骤
  • Error:java: 无法从静态上下文中引用非静态 变量 this

    Error java 无法从静态上下文中引用非静态 变量 this 分析 出现这种错误首先先分清什么是静态什么是非静态 它们之间的关系是什么 静态方法中不能引用非静态变量 非静态方法中能引用静态变量 错误原因代码如下 public clas
  • 关于pd.read_excel()读取xls文件报错的解决办法

    报错信息 File E Python lib site packages xlrd compdoc py line 426 in locate stream raise CompDocError s corruption seen d d
  • 电商数据部分展示

    京东链接 商品id 标题 价格部分数据展示 淘宝标题 价格 优惠价格 链接部分数据展示
  • 跳动的爱心(c++版)

    include
  • 科教兴国

    在这个时代 人工智能的奇迹交织成一片璀璨的星河 在这片星河中 各大企业如同星辰 闪烁着探索的光芒 寻找着那些志同道合的伙伴 我们并肩飞翔 穿越信息的海洋 共同描绘出未来的蓝图 每一次合作 都如同星星之间的碰撞 擦出创新的火花 为这个时代注入
  • Linux安装JDK、Redis、MySQL、RabbitMQ、Minio、Nginx.......

    文章目录 一 环境准备 二 安装JDK 三 安装MySQL 四 安装Redis 三 安装RabbitMQ 四 安装Minio 五 安装Nginx 特殊情况处理 Centos7挂载磁盘 服务器时间同步 MySQL数据库时间同步 安装解压软件
  • LeetCode题目笔记——2357. 使数组中所有元素都等于零

    文章目录 题目描述 题目链接 题目难度 简单 方法一 直接模拟 代码 Python 方法二 哈希表 代码 Python 总结 题目描述 给你一个非负整数数组 nums 在一步操作中 你必须 选出一个正整数 x x 需要小于或等于 nums
  • Android APK反编译详解(附图)

    在学Android应用开发 在想既然是用Java开发的应该很好反编译从而得到源代码吧 google了一下 确实很简单 以下是我的实践过程 在此郑重声明 贴出来的目的不是为了去破解人家的软件 完全是一种学习的态度 不过好像通过这种方式也可以去
  • 二分法查找两个有序数列的中位数

    背景 输入两个有序数列 a a1 a2 an 其中a1
  • LayUI导入excel功能

    第一种导入 div class layui form block div
  • 2个红外传感器循迹原理_智能循迹小车

    今天我们来学习制作智能循迹小车 那么什么是智能小车呢 智能小车作为现代的新发明 是以后的发展方向 它可以按照预先设定的模式在一个环境里自动的运作 不需要人为的管理 可应用于科学勘探等等的用途 智能小车能够实时显示时间 速度 里程 具有自动寻
  • Go基础:数据结构(定义和go语言实现)

    目录 前言 一 数组 Array 1 优缺点 2 适用场景和不适用场景 二 切片 Slice 1 优缺点 2 适用场景和不适用场景 三 链表 Linked List 1 优缺点 2 适用场景和不适用场景 四 栈 Stack 1 优缺点 2
  • 退役一年感悟

    不知不觉 退役已经快有一年了 前几天突发奇想登上了洛谷 就看见距离 CSP2020 只有一周了 不禁感慨时间之快 刚刚考完 CSP2019 后 思绪一直很混乱 我很难受 很不甘 感觉自己的实力并没有充分展现出来 我分明学过更难 更高深的知识
  • 技术人员的赚钱之道-9:极思极恐,技术人员需了解的“穷人”思维与“富人”思维的差别

    认识到自己的不足 是自我完善的前提 完善自己的不足 持续的改进 也算是Agile思想的体现 反复阅读 时常刷新自己的认知局限 省钱与花钱 穷人的思维是如何存钱 勤俭持家 富人的思维是如何让钱生钱 增值盈利 因此富人会尽量把钱花出去 不是消费
  • 如何通过IDEA查看注解逻辑实现

    日常写代码的过程中会使用到很多Spring框架提供的注解 也会读到别人写的自定义注解 很多时候会好奇注解背后的实现逻辑 本文就简单地记录一下 如何通过代码中的注解 使用IDEA定位到注解的逻辑实现位置 以下方法适用于官方注解 自定义注解 以
  • 27、Docker 镜像命令

    1 镜像相关命名2 镜像操作命令 0 docker help 查看帮助文档 1 docker image 查看所有镜像 2 docker pull 从服务拉去镜像 3 docker save 将镜像保存为一个压缩包 4 docker rmi
  • 在struts框架下实现文件的上传

    由于jspsmartupload上传文件 当前端页面没有file控件时 后端用jspsmartupload控件upload时将会走入一个死循环 现在采用struts自己提供的功能实现文件的上传 1 前端页面upload jsp
  • vue3进阶-----单文件组件

    目录 三 vue3进阶 1 单文件组件 1 1组件定义 重塑经脉 断了 1 2单文件组件 SFC 独立日 1 3Vue CLI创建项目 锅灶升级 1 4 vuecli选项介绍 1 5 VueCLI创建项目 风云再起 index html m