使用vue3结构及配置管理

简介: 使用vue3结构及配置管理

一. vue-cli2和vue-cli3的区别



  • vue-cli3 是基于webpack4的, vue-cli2是基于webpack3
  • vue-cli3的设计原则是"0配置", 移除了配置文件根目录下build和config等目录
  • vue-cli3 提供了vue ui命令, 进行可视化配置, 操作更方便
  • 替换了static文件夹为public文件夹, 并且index.html移动到public文件夹中


二. 创建vue-cli3脚手架



之前创建了vue-cli2的脚手架, 这次来创建vue-cli3的.

创建项目的命令:


vue create 项目名称

1. please pick a preset: 请选择一个配置

047a02a8f8f54f11a9d6de5fde0a6e2d_tplv-k3u1fbpfcp-watermark.png

三选一, 我们来看看这个配置的含义:

  1. defalut (babel, eslint)
    默认配置, 默认配置安装了es6转es5,eslint代码格式化工具
  2. Manually select feature: 手动选择特性
    通常, 如果我们需要指定哪些插件安装,哪些不安装, 就可以选择手动


505ad4b8bc9244acaa3acd961ffe5d16_tplv-k3u1fbpfcp-watermark.png

  • 按空格键, 选中/取消选中
  • 按上下箭头, 上下选择
  • 取消Linter, 我们不使用格式啊校验.


某些配置是单独放在在一个配置文案


2. Where do you prefer placing config for Babel, ESLint, etc.? (Use arrow keys): 配置文件放在那里呢?

  • In dedicated config files:独立文件
  • In package.json : 放到package.json中
    通常我们都选择独立的配置文件, 方便管理


3. Save this as a preset for future projects? (y/N) 是否将刚刚的配置保存到项目中?


如果选择是: 下次在配置选项的时候, 除了default,manually,还会多一个我们保存的项目配置.


  • Y: 如果以后搭建项目都希望是这个配置就选择y
  • N: 不希望保存配置
    下次在创建项目的时候, 我们就可以自动选择之前保存的项目特征


da655b97e4c545d796b0c97284729469_tplv-k3u1fbpfcp-watermark.png

如果我们设置了很多自定义配置,如何取消呢?


在/Users/用户名/.vuerc, 修改这个文件


{
  "useTaobaoRegistry": false,
  "presets": {
    "mySet": {
      "useConfigFiles": true,
      "plugins": {
        "@vue/cli-plugin-babel": {}
      },
      "vueVersion": "2"
    }
  }
}

里面有个选项是presets. 下面就是我们保存的设置.设置名称是mySet.这个配置只安装一个插件:@vue/cli-plugin-babel


4. Save preset as: 保存上面的配置的文件名是什么?


三. vue-cli3项目的目录结构



下面来对比看一下vue-cli2 和vue-cli3的项目结构的区别

b63192cdcf524af2bc14b5c51976045b_tplv-k3u1fbpfcp-watermark.png


可以看到vue-cli3的项目结构简洁了很多

  • build和config配置文件都没有了
  • static换成了public文件夹.

下面我们来看一下vue-cli3项目中各个文件的含义


1. node_modules: npm构建的组件都在这个文件夹里面

2. public: 里面存放公共资源. 目前有index.html和

3. src: 存放源代码

4. .browserslitstrc: 浏览器适配配置


> 1%
last 2 versions
not dead

适配市场份额大于1%的最后两个版本, 不适配已经过期的版本


5. gitignore: 忽略文件


node_modules
/dist

重点看这个, 忽略node_modules文件和/dist构建后的文件. 通过运行npm run serve就可以生成这两个文件了


6. babel.config.js: babel插件设置


module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ]
}

通常, 不修改这个文件的内容


7. package.json: npm配置文件


{
  "name": "03-vuecli3",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "vue-template-compiler": "^2.6.11"
  }
}

这个比vue-cli2的devDependencies配置文件少了很多. 而多了一个下面这个配置:


"@vue/cli-service": "~4.5.0",

这个配置的作用是: 管理dev环境的依赖. vue-cli3使用这个配置以后, 简化了配置文件.

8. package-lock.json: 真实使用的插件的版本号.


在package.json配置文件中, 我们会使用~或者^来模糊匹配版本号, 而这个文件里就是精确指明使用的详细版本号了


四.vue-cli2和vue-cli3中 main.js文件的区别


来看下面的图片, 对比二者的区别:


d8f5e5aa1ccf43b09d2bdc450cad651c_tplv-k3u1fbpfcp-watermark.png

Vue.config.productionTip = false

这句话的意思是: 是否打印项目启动的详细提示信息. false: 不打印. true: 打印

不同的地方在这里


vue-cli2


new Vue({
  el: '#app',
  render: h => h(App)
})

vue-cli3


new Vue({
  render: h => h(App),
}).$mount('#app')

其实这两种写法是一个意思. el:'#app',vue在解析的时候, 会去执行$mount("#app").


五. vue-cli3的配置文件管理



vue-cli3为了项目结构简单, 去掉了config和build文件夹。 但是这些文件夹实际上都是需要的。 加入我们想要修改配置文件, 要如何修改呢?有三种方法:


方法一:使用vue UI配置界面修改


首先, 我们安装vue UI界面管理。 这是一个全局的命令


vue ui

安装好以后, 如下所示:

f527d615894d4f3d98eed8a95c7b4d6d_tplv-k3u1fbpfcp-watermark.png

然后打开界面

d0248460a40c466aa68195cac1009b37_tplv-k3u1fbpfcp-watermark.png



在这我们可以导入项目, 创建项目.

我们导入刚刚创建的vuecli3项目, 导入成功后看到如下界面:

c75f15bfa5914868980fe5de909b27b2_tplv-k3u1fbpfcp-watermark.png



页面左侧有菜单, 分别看:

a.插件

6ce2c715a37f429c999bf1d75ba9a5b0_tplv-k3u1fbpfcp-watermark.png


在这里可以看到我们安装的全部插件, 还可以点击添加插件按钮,安装新插件. 这些插件可以在package.json配置文件中找到


{
  "name": "03-vuecli3",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "vue-template-compiler": "^2.6.11"
    }
}

在devDependencies选项中有三个插件, 而我们的vue ui中只有两个, 另一个在<依赖>里面,一会就可以看到了.


b.依赖

22755055e3bd4672b80e6a4f363244f8_tplv-k3u1fbpfcp-watermark.png

可以看到目前这个项目依赖core-js和vue. 其中vue的版本是2.6.12 同时依赖了vue-template-compiler, 版本也是2.6.12, 通常vue和vue-template-compiler的版本是一样的. 如果不一样, 可能编译会报错.


c.配置

7a958f36f9964220a2dec01e523c5eae_tplv-k3u1fbpfcp-watermark.png


这里面就有我们之前在webpack.config.js中定义的输入路径,输出路径, 公共路径等. 如果需要修改, 可以直接修改这里


d.任务


我们之前启动服务都是使用命令, vue3也可以在ui界面进行启动


892d1abdbccb42b1baff0588c21101f6_tplv-k3u1fbpfcp-watermark.png


点击运行按钮, 即可启动.并且可以监控启动状态等.


方法二:在node_module模块中查看配置


虽然vue-cli3简化了配置, 但是这些配置还是得有, 只是对用户来说, 隐藏了. 那么这个配置隐藏在哪里了呢?在node_module中@vue目录下.

41103dd7371f4d64b5ea299a733b6381_tplv-k3u1fbpfcp-watermark.png

在@vue目录下, 找到cli-service目录, 现在vue的配置都交给了cli-service来管理. 在cli-service目录下, 有一个webpack.config.js.这个就是webpack的配置.


// this file is for cases where we need to access the
// webpack config as a file when using CLI commands.
let service = process.VUE_CLI_SERVICE
if (!service || process.env.VUE_CLI_API_MODE) {
  const Service = require('./lib/Service')
  service = new Service(process.env.VUE_CLI_CONTEXT || process.cwd())
  service.init(process.env.VUE_CLI_MODE || process.env.NODE_ENV)
}
module.exports = service.resolveWebpackConfig()

我们看到它引入了lib目录下的Service.js配置文件, 这里面有引入了很多包.

4b51e4a22557412f995866eb69380345_tplv-k3u1fbpfcp-watermark.png

这里就有base基础配置, dev开发环境配置,prod生成环境配置等.


方法三: 自定义需要修改的配置文件


如果我们想要修改默认配置, 需要在根目录下新建一个文件vue.config.js. 这个文件名是固定的, 不可修改.


然后将自定义的内容写到module.exports里面


module.exports= {
}


相关文章
|
2月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
146 64
|
2月前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
117 60
|
12天前
|
JavaScript API 数据处理
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
44 3
|
2月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
41 8
|
2月前
|
存储 JavaScript 数据管理
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
34 1
|
2月前
|
JavaScript
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
44 1
|
2月前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
2月前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
2月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
2月前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
80 7

热门文章

最新文章