Vue CLI3搭建项目步骤

223 阅读6分钟

一、安装Vue CLI3 首先你要卸载Vue CLI2,用命令npm uninstall vue-cli -g卸载; 输入命令npm install -g @vue/cli安装Vue CLI3; 安装完成后,输入命令vue --version,查看Vue CLI的版本号是否是3.0以上,是代表安装成功。

二、搭建Vue项目

输入命令vue create flow_manage_platform,flow_manage_platform为项目名称; 按上下键选择Manually select features(手动选择功能)项,default (babel, eslint)(默认安装); 按上下键和回车键选择要安装的功能; 使用路由器的历史模式,回车进入下一步; 选择CSS预处理语言,选择less/sass(看自己的使用习惯),回车进入下一步; 选择In dedicated config files,将Babel、PostCSS等配置独立在package.json文件外; 是否保存安装配置,直接回车进入下一步;

三、安装完成后通过npm run serve 启动 成功显示 下图:

构建成功后的结构(如下图):

精简了很多,但还是和vue2.0有很多区别的,基本的用法变化不是特别大

① vuex(状态管理):

  vue cli 2 中 :vuex是搭建完成后自己npm install的,并不包括在搭建过程中。可以看到vue cli 2的vuex默认文件夹(store)又包含了三个js文件:action(存放一些调用外部API接口的异步执行的的方法,然后commit mutations改变mutations 数据)、index(初始化mutations 数据,是store的出口)、mutations(处理数据逻辑的同步执行的方法的集合,Vuex中store数据改变的唯一方法commit mutations)

  vue cli 3 中:vuex是包含在搭建过程供选择的预设。vue cli 3 中默认只用一个store.js代替了原来的store文件夹中的三个js文件。action、mutations、state以及store 的 getters 的用法有很多

② router (路由):

  vue cli 2 :“ router/index.js ”

  vue cli 3:“router.js”(用法和做的事都一样)

③ 去掉 static 、 新增 public 文件夹

  vue cli 2 :static 是 webpack 默认存放静态资源的文件夹,打包时会直接复制一份到dist文件夹不会经过 webpack 编译

  vue cli 3 :摒弃 static 新增了 public 。vue cli 3 中“静态资源”两种处理方式:

  经webpack 处理:在 JavaScript 被导入或在 template/CSS 中通过“相对路径”被引用的资源会被编译并压缩

  不经webpack 处理:放置在 public 目录下或通过绝对路径被引用的资源将会“直接被拷贝”一份,不做任何编译压缩处理

④ index.html :

  vue cli 2 :“index.html ”

  vue cli 3 :“public/index.html ”此模板会被 html-webpack-plugin 处理的

⑤ src/views:

  vue cli 3 的 src文件夹 新增 views文件夹 用来存放 “页面”,区分 components(组件)

⑥ 去掉 build(根据config中的配置来定义规则)、config(配置不同环境的参数)文件夹 :

  vue cli 3 中,这些配置 你可以通过 命令行参数、或 vue.config.js (在根目录 新建一个 vue.config.js 同名文件)里的 devServer 字段配置开发服务器

⑦ babel.config.js:

  配置Babel 。Vue CLI 使用了 Babel 7 中的新配置格式 babel.config.js。和 .babelrc 或 package.json 中的 babel 字段不同,这个配置文件不会使用基于文件位置的方案,而是会一致地运用到项目根目录以下的所有文件,包括 node_modules 内部的依赖。官方推荐在 Vue CLI 项目中始终使用 babel.config.js 取代其它格式。

⑧ 根目录的一些其他文件的改变: 之前所有的配置文件都在vue create 搭建时preset预设 或者 后期可以通过 命令参数 、 vue.config.js 中配置 在根目录下新建一个vue.config.js文件,进行你的配置,具体配置看文档,我在最下边简单罗列了几个

module.exports = { // 部署应用时的基本 URL baseUrl: process.env.NODE_ENV === 'production' ? '192.168.60.110:8080' : '192.168.60.110:8080',

// build时构建文件的目录 构建时传入 --no-clean 可关闭该行为
outputDir: 'dist',

// build时放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
assetsDir: '',

// 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。
indexPath: 'index.html',

// 默认在生成的静态资源文件名中包含hash以控制缓存
filenameHashing: true,

// 构建多页面应用,页面的配置
pages: {
    index: {
        // page 的入口
        entry: 'src/index/main.js',
        // 模板来源
        template: 'public/index.html',
        // 在 dist/index.html 的输出
        filename: 'index.html',
        // 当使用 title 选项时,
        // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
        title: 'Index Page',
        // 在这个页面中包含的块,默认情况下会包含
        // 提取出来的通用 chunk 和 vendor chunk。
        chunks: ['chunk-vendors', 'chunk-common', 'index']
    },
    // 当使用只有入口的字符串格式时,
    // 模板会被推导为 `public/subpage.html`
    // 并且如果找不到的话,就回退到 `public/index.html`。
    // 输出文件名会被推导为 `subpage.html`。
    subpage: 'src/subpage/main.js'
},

// 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码 (在生产构建时禁用 eslint-loader)
lintOnSave: process.env.NODE_ENV !== 'production',

// 是否使用包含运行时编译器的 Vue 构建版本
runtimeCompiler: false,

// Babel 显式转译列表
transpileDependencies: [],

// 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建
productionSourceMap: true,

// 设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin 属性(注:仅影响构建时注入的标签)
crossorigin: '',

// 在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启用 Subresource Integrity (SRI)
integrity: false,

// 如果这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中
// 如果你需要基于环境有条件地配置行为,或者想要直接修改配置,那就换成一个函数 (该函数会在环境变量被设置之后懒执行)。该方法的第一个参数会收到已经解析好的配置。在函数内,你可以直接修改配置,或者返回一个将会被合并的对象
configureWebpack: {},

// 对内部的 webpack 配置(比如修改、增加Loader选项)(链式操作)
chainWebpack: () =>{

},

// css的处理
css: {
    // 当为true时,css文件名可省略 module 默认为 false
    modules: true,
    // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中,当作为一个库构建时,你也可以将其设置为 false 免得用户自己导入 CSS
    // 默认生产环境下是 true,开发环境下是 false
    extract: false,
    // 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能
    sourceMap: false,
    //向 CSS 相关的 loader 传递选项(支持 css-loader postcss-loader sass-loader less-loader stylus-loader)
    loaderOptions: {
        css: {},
        less: {}
    }
},

// 所有 webpack-dev-server 的选项都支持
devServer: {},

// 是否为 Babel 或 TypeScript 使用 thread-loader
parallel: require('os').cpus().length > 1,

// 向 PWA 插件传递选项
pwa: {},

// 可以用来传递任何第三方插件选项
pluginOptions: {}

} devServer的配置:

四、最后

希望能为能够帮助到初学者 下一篇给大家写一些入门的实例