Vue-cli@3.0:深入解析插件系统

0 下载量 189 浏览量 更新于2024-08-31 收藏 110KB PDF 举报
Vue-cli@3.0是Vue.js生态中的一个关键工具,它是一个完全重构的项目脚手架,用于快速搭建Vue.js应用。与之前的版本相比,3.0版本采用了一种基于插件的架构,大大增强了其灵活性和可扩展性。本文将深入探讨Vue-cli@3.0的插件系统,理解其设计原理和工作方式。 首先,Vue-cli@3.0的核心由两个主要部分组成:`@vue/cli`和`@vue/cli-service`。前者提供命令行接口(CLI)服务,如`vue create`命令,用于创建新的Vue项目。后者,`@vue/cli-service`则负责本地开发环境的构建和相关服务,比如开发服务器、打包构建和代码检查。 在创建新项目时,`vue create`命令并不会像旧版本那样从远程模板拉取配置,而是生成一个包含`package.json`的项目结构。在这个`package.json`中,我们看到`serve`、`build`和`lint`等脚本,它们都是由`@vue/cli-service`提供的。这些脚本利用了webpack和相关插件,但并不直接暴露webpack配置,而是通过预设的脚本调用内部服务。 `@vue/cli-service`将webpack配置和插件的管理收归内部,这样做的好处是使得项目配置更加简洁,同时保持了与CLI工具的紧密集成。例如,`serve.js`和`build/index.js`是内部构建和开发服务的入口,它们定义了服务的启动逻辑,并通过内置插件系统来提供服务。 插件系统的设计允许开发者自定义项目的行为,通过添加或修改默认的构建流程。每个插件可以修改Webpack配置,添加新的命令,或者提供额外的开发工具。Vue-cli@3.0的插件系统是基于`@vue/configure`库实现的,这个库提供了一套API,让开发者能够方便地扩展CLI服务。 当执行`npm run serve`启动开发服务器时,`@vue/cli-service`会根据项目的`package.json`配置加载并运行对应的插件。这些插件可以是在项目中安装的第三方插件,也可以是内置的插件,如`@vue/cli-plugin-babel`和`@vue/cli-plugin-eslint`。每个插件都有机会在构建流程的不同阶段介入,比如在Webpack配置生成之前或之后,从而实现对项目构建过程的定制。 总结来说,Vue-cli@3.0的插件系统是其强大之处,它允许开发者以模块化的方式增强CLI的功能,简化项目配置,同时保持与最新技术栈的同步。通过理解这一系统,开发者可以更高效地定制自己的Vue.js开发环境,提高开发效率和项目质量。
2019-03-28 上传
# URL: http://kongkong.fence.wmdev2.lsh123.com/ # jl-mis(接龙后台管理系统) 项目是基于vue-cli 3+ 构建的,请先将vue-cli升级到3+版本,vue-cli3 传送门(https://cli.vuejs.org/zh/)。 ## 技术栈 vue2 + vuex + vue-router + element-ui + webpack + ES6/7 + axios + less + flex + svg ### 项目图形化管理界面 ``` vue ui ``` ## 项目运行 #### 注意:由于涉及大量的 ES6/7 等新属性,node 需要 8.0 以上版本 ``` npm install npm run serve ``` ### 打包 ``` npm run build ``` ### 代码的 lint ``` npm run lint ``` # 项目布局 ``` . ├── public // HTML 和静态资源 │   ├── favicon.ico // 图标 │   ├── index.html // 入口html文件 ├── src // 源码目录 │   ├── assets // 静态资源 │   │   ├── images // 公共图片 │   ├── components // 组件 │   │   ├── common // 公共组件 │   │   ├── page // 页面 │   ├── libs // 封装库 │   │   ├── storage.js // 对cookie 和 localStorage 的封装 │   ├── plugins // 引用的插件 │   │   ├── axios.js // 对axios的的封装(拦截器相关) │   │   ├── element.js // 引入element-ui │   ├── router │   │   └── router.js // 路由配置 │   ├── service // 数据交互统一调配 │   │   ├── service.js // 获取数据的统一调配文件,对接口进行统一管理 │   ├── store // vuex的状态管理 │   │   ├── actions.js // 配置actions │   │   ├── getters.js // 配置getters │   │   ├── store.js // 引用vuex,创建store │   │   ├── modules // store模块 │   │   │   ├── urlGroups.js // 路由分组(权限相关) │   │   ├── mutation-types.js // 定义常量muations名 │   │   └── mutations.js // 配置mutations │   └── style // 样式字体相关 │   ├── fonts // 字体相关 │   ├── utility.less // 公共样式文件 │   ├── mixin.less // 样式配置文件 │   └── normalize.css // 样式重置 │   ├── App.vue // 页面入口文件 │   ├── main.js // 程序入口文件,加载各种公共组件 ├── vue.config.js // vue-cli 3+ 暴露出来的webpack相关的配置文件 . ```