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 相关文章推荐
javascript中match函数的用法小结
Feb 08 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
Feb 10 Javascript
jquery text()方法取标签中的文本
Jul 25 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
Nov 29 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
May 11 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
详解JavaScript中typeof与instanceof用法
Oct 24 Javascript
puppeteer库入门初探
Jan 09 Javascript
JavaScript实现京东快递单号查询
Nov 30 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中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
Python操作MySQL简单实现方法
2015/01/26 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python中包的用法及安装
2020/02/11 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
2020/04/02 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
Java模拟试题
2014/11/10 面试题
小学美术教学反思
2014/02/01 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
应聘护士求职信
2014/07/21 职场文书
出纳试用期自我评价
2015/03/10 职场文书
合作意向书范本
2019/04/17 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
快速学习Oracle触发器和游标
2021/06/30 Oracle
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript