vue-cli常用设置总结


Posted in Javascript onFebruary 24, 2018

基于vue-cli做了好几个项目了,想把一些自己的常用设置写出来,磨了好久,一看vue-cli3.0都快出来了,不能再磨了。。

路径相关

css内引用的资源

build -> utils.js
 // generate loader string to be used with extract text plugin
 function generateLoaders (loader, loaderOptions) {
  //less
  // Extract CSS when that option is specified
  // (which is the case during production build)
  if (options.extract) {
   return ExtractTextPlugin.extract({
    use: loaders,
    publicPath: '../../', //注意: 此处根据路径, 自动更改
    fallback: 'vue-style-loader'
   })
  } else {
   return ['vue-style-loader'].concat(loaders)
  }
 }

本地访问

config -> index.js
module.exports = {
 build: {
  //less
  //assetsPublicPath: '/',
  assetsPublicPath: './',
  //less
 },
 //less
}

调试相关

内网访问

config -> index.js

module.exports = {
 //less
 dev: {
  //less
  port: process.env.PORT || 8080,//可改端口
  host:'192.168.0.105',//不是8080端口可能需要指定host为本机IP
 }
}

跨域代理

config -> index.js
module.exports = {
 //less
 dev: {
  //less
  proxyTable: {
   '/AppHome': {
    target: 'http://192.168.0.211:2334',//接口域名
    changeOrigin: true,//是否跨域
    pathRewrite: {
     '^/AppHome': '/AppHome'//需要rewrite重写
    }
   }
  },
 }
}
config -> dev.env.js
module.exports = merge(prodEnv, {
 NODE_ENV: '"development"',
 API_HOST: '"AppHome/"' 
})
config -> prod.env.js
module.exports = {
 NODE_ENV: '"production"',
 API_HOST: '"http://xxx.xxx.com/AppHome/"' //生产环境改为绝对地址,免得路径错了
}
//调用
this.$http
  .post(process.env.API_HOST + "GetApproveTypeList", { ID: 0 })
  .then(data => {
  let $data = data.data;
  if ($data.IsSuccess) {
    this.list.push(...$data.Model);
  }
});

路由加载切换

异步加载可以加快首屏加载速度,但是在开发阶段会导致热加载变慢,所以根据NODE_ENV来判断,开发环境不使用异步

let _import
if (process.env.NODE_ENV === 'development') {
 _import = file => require('@/components/' + file + '.vue').default
}
if (process.env.NODE_ENV === 'production') {
 _import = file => () => import('@/components/' + file + '.vue')
}

routes: [
  {
    path: '/',
    name: 'Index',
    component: _import('Approve/Index'),
    meta: {
      level: 1
    }
  },
]

打包

dll打包

1、在build目录新建webpack.dll.conf.js

var path = require("path");
var webpack = require("webpack");
module.exports = {
  // 你想要打包的模块的数组
  entry: {
    vendor: ['vue/dist/vue.esm.js', //有些资源需要直接指定js,否则会重复打包
         'vuex',
         'axios',
         'vue-router'
        ]
  },
  output: {
    path: path.join(__dirname, '../static/js'), // 打包后文件输出的位置
    filename: '[name].dll.js',
    library: '[name]_library'
    // vendor.dll.js中暴露出的全局变量名。
  },
  plugins: [
    new webpack.DllPlugin({
      path: path.join(__dirname, '..', '[name]-manifest.json'),
      name: '[name]_library',
      context: __dirname
    }),
    // 压缩打包的文件
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false
      }
    })
  ]
};

2、在build目录下的webpack.prod.conf.js添加新插件

const webpackConfig = merge(baseWebpackConfig, {
  //less
 plugins: [
  //less
  new webpack.DllReferencePlugin({
   context: __dirname,
   manifest: require('../vendor-manifest.json')
  })
 ]
})

3、在项目根目录下的index.html内添加dll.js引用

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 </head>
 <body>
  <div id="app"></div>
  <!-- built files will be auto injected -->
  <script src="./static/js/vendor.dll.js"></script>
 </body>
</html>

4、在项目根目录下的package.json内添加dll命令(顺便给build命令添加report),运行一次生成dll.js

"scripts": {
  "dev": "node build/dev-server.js",
  "start": "npm run dev",
  "build": "node build/build.js --report",
  "dll": "webpack --config build//webpack.dll.conf.js"
 }

关闭SourceMap

config -> index.js
module.exports = {
 //less
 build: {
  //less
  productionSourceMap: false,
 },
}

总结

以上所述是小编给大家介绍的vue-cli常用设置总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 点击页面其他地方关闭弹出层(示例代码)
Dec 24 Javascript
原生js事件的添加和删除的封装
Jul 01 Javascript
基于javascript的COOkie的操作实现只能点一次
Dec 26 Javascript
jQuery使用animate创建动画用法实例
Aug 07 Javascript
javascript封装简单实现方法
Aug 11 Javascript
用原生js做单页应用
Jan 17 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 Javascript
如何使用Bootstrap 按钮实例详解
Mar 29 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
Sep 27 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
Promise静态四兄弟实现示例详解
Jul 07 Javascript
JS处理一些简单计算题
Feb 24 #Javascript
jQuery 改变P标签文本值方法
Feb 24 #jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 #jQuery
通过js动态创建标签,并设置属性方法
Feb 24 #Javascript
JS随机数产生代码分享
Feb 24 #Javascript
JS中常用的消息框总结
Feb 24 #Javascript
JS改变页面颜色源码分享
Feb 24 #Javascript
You might like
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
Python高效编程技巧
2013/01/07 Python
Python fileinput模块使用实例
2015/05/28 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python基于opencv检测程序运行效率
2019/12/28 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
中秋节礼品促销方案
2014/02/02 职场文书
经典洗发水广告词
2014/03/13 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
购房协议书范本
2014/10/02 职场文书
政风行风整改方案
2014/10/25 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
教代会闭幕词
2015/01/28 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS