实战Vue简易项目(2)定制开发环境

本章内容包含上一章思考的解决,还有一些其它的定制...

CSS预处理

关于对.vue文件模块处理规则的配置依次可在build/webpack.base.conf.js->build/vue-loader.conf.js->build/utils.js文件中跟踪;

loaders的关键在于build/vue-loader.conf.js文件中对utils.cssLoaders的调用:

...
module.exports = {loaders: utils.cssLoaders({sourceMap: sourceMapEnabled,extract: isProduction}),
...

说了这么一堆,我想表达啥呢?

因为个人在项目中,习惯用scss编写样式,跟踪以上文件发现,针对.vue文件的预处理loaders中已经包含对scss的处理:

//utils.js文件exports.cssLoaders = function (options) {options = options || {}
...return {css: generateLoaders(),postcss: generateLoaders(),less: generateLoaders('less'),sass: generateLoaders('sass', { indentedSyntax: true }),scss: generateLoaders('sass'),stylus: generateLoaders('stylus'),styl: generateLoaders('stylus')}
}

这样,是不是可以直接使用scss了呢?

恭喜你,会报错...

查找发现,package.json中并没有关于sass-loader的依赖,所以,我们需要安装sass-loadernode-sassNPM包:npm i -D sass-loadernpm i -D node-sass

测试可行性

安装完成后,在src/components/HelloWorld.vue文件中进行测试:

scss测试

局域网访问

默认情况下,初始化的环境是不允许局域网访问的,如果想局域网访问的话,跟踪路径build/webpack.dev.conf.js为什么跟踪这个文件呢?)可以发现:

devServer: {clientLogLevel: 'warning',
...host: HOST || config.dev.host,port: PORT || config.dev.port,open: config.dev.autoOpenBrowser,
...

这里指定了host字段,而HOST值在该文件可查找到const HOST = process.env.HOST,也就是说,如果想要局域网内访问,有两种解决方案:

  1. 在命令行中配置--host 0.0.0.0,即在/package.jsonscripts中修改 "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0",
  2. config/index.js中:
module.exports = {dev: {
...host: 'localhost', // can be overwritten by process.env.HOSTport: 8080,
...

修改host: 'localhost',host: '0.0.0.0',,即可;

推荐使用配置文件修改,即:第二种。

至于,为什么跟踪build/webpack.dev.conf.js文件?

因为这个功能是开发环境下独有的,要修改开发环境吖,必然找开发环境的配置文件进行跟踪。

注意:

  • 修改本地服务器配置,要重启本地服务器(在命令行中Ctrl + c,然后npm run dev即可)才可应用新的配置。

测试可行性:

重启项目后,在浏览器中输入http://192.168.1.106:8080/#/192.168.1.106是你本地IP,可通过ipconfig /all查看)能够访问,就说明局域网内的其他端可以访问。

不信?你试试手机。

打包文件路径

如果,你想和其它朋友分享你的成果,部署到服务器上或直接打包发给朋友,通过npm run build即可生成静态资源dist/

然而,打开dist/index.html,发现是空白页,控制台还报错(资源找不到),人生失去了希望...

这是因为webpack生产配置文件output.publicPath配置有问题,跟踪文件build/webpack.base.conf.js->build/webpack.prod.conf.js

很好,我们在build/webpack.base.conf.js中就发现了:

  output: {path: config.build.assetsRoot,filename: '[name].js',publicPath: process.env.NODE_ENV === 'production'? config.build.assetsPublicPath: config.dev.assetsPublicPath},

跟踪config.build.assetsPublicPath找到config/index.js,修改:

  build: {// Template for index.htmlindex: path.resolve(__dirname, '../dist/index.html'),// PathsassetsRoot: path.resolve(__dirname, '../dist'),assetsSubDirectory: 'static',assetsPublicPath: '/', //将assetsPublicPath的值修改为'./'

为什么这样修改呢?

这是因为打包文件引用所在地址的组成规则为output.publicPath + filename


然而,这样并没有结束

如果在样式中引入图片,会报图片路径错误,引用地址static/css/static/css/img/XXX.png

需要修改build/utils.js

   if (options.extract) {return ExtractTextPlugin.extract({use: loaders,fallback: 'vue-style-loader',publicPath: '../../'})} else {return ['vue-style-loader'].concat(loaders)}

webpack打包要区分两个路径:

  1. 打包路径(文件存储位置:output.path + [filename | name])
  2. 引用路径(文件互相引用的位置:output.publicname + [filename | name])

ES6+

目前还不能结束...

目前ES6的语法成为了主流,如果你在项目中使用了ES6,在一些较旧的浏览器中,呵呵...

Object.assignArray.from...方法无法使用,程序报错。

怎么办呢?

npm i -S babel-polyfill安装polyfill,它会为ES2015+添加的新的API作兼容为低版本浏览器可用,俗称“垫片”。

需要将polyfill打包到生产包中,即build/webpack.base.conf.js文件中:

module.exports = {context: path.resolve(__dirname, '../'),entry: {app: './src/main.js' //需要修改为app: ['babel-polyfill','./src/main.js']},

章节回顾

  • 还记得如何预处理scss么,那如果使用Less呢?
  • 还记得如何局域网访问么,那如果想修改端口呢?
  • 还记得如何打包部署么,可能会出现什么问题?
  • 还记得如何考虑旧版本浏览器兼容么?

思考

  • 项目结构怎么搭建呢?
  • 页面结构怎么布局呢?
  • 哪些组件可以分离出来呢?
  • 哪些工具单元可以分离出来呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[POI2007]POW-The Flood

题目描述 给定一张地势图,所有的点都被水淹没,现在有一些关键点,要求放最少的水泵使所有关键点的水都被抽干 输入输出格式 输入格式: In the first line of the standard input there are two integers and , separated by a sin…

LOAM_velodyne学习(二)

LaserOdometry 这一模块(节点)主要功能是:进行点云数据配准,完成运动估计 利用ScanRegistration中提取到的特征点,建立相邻时间点云数据之间的关联,由此推断lidar的运动。我们依旧从主函数开始&#xff1…

户外穿越

晚上很早就睡了,并且,太过激动,所以早上四点五十分就被惊醒,然后到早上闹钟响。 早上匆匆忙吃过早餐,就赶去坐车,到登山之前,坐了大巴车,又坐了景区的车,景区的路是山路十…

【oracle】关于创建表时用default指定默认值的坑

刚开始学create table的时候没注意,学到后面发现可以指定默认值。于是写了如下语句: 当我查询的时候发现,查出来的结果是这样的。。 很纳闷有没有,我明明指定默认值了呀,为什么创建出来的表还是空的呢?又跑…

[OpenGL ES 03]3D变换:模型,视图,投影与Viewport

[OpenGL ES 03]3D变换:模型,视图,投影与Viewport 罗朝辉 (http://blog.csdn.net/kesalin) 本文遵循“署名-非商业用途-保持一致”创作公用协议 系列文章:[OpenGL ES 01]OpenGL ES之初体验[OpenGL ES 02]OpenGL ES渲染管线与着色器…

LOAM_velodyne学习(三)

终于到第三个模块了,我们先来回顾下之前的工作:点云数据进来后,经过前两个节点的处理可以完成一个完整但粗糙的里程计,可以概略地估计出Lidar的相对运动。如果不受任何测量噪声的影响,这个运动估计的结果足够精确&…

监控视频线种类 视频信号传输介绍及各种视频接口的传输距离

一.视频信号接口 监控视频线种类介绍: 按照材料区分有SYV及SYWV两种,绝缘层的物理材料结构不同,SYV是实心聚乙烯电缆,SYWV是高物理发泡电缆,物理发泡电缆传输性能优于聚乙烯。 S--同轴电缆 Y--聚乙烯 V--聚氯乙烯 W…

Ajax工作原理

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt238 在这篇文章中,我将从10个方面来对AJAX技术进行系统的讲解。 1、ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth、go…

各种视频信号格式及端子介绍/VGA DVI HDMI区别

视频信号是我们接触最多的显示信号,但您并不一定对各种视频信号有所了解。因为国内用到的视频信号格式和端子非常有限,一般就是复合视频和S端子,稍高级一些的就是色差及VGA。对于那些经常接触国外电器和二手设备的朋友,就会遇到各…

LOAM_velodyne学习(四)

TransformMaintenance 来到了最后一个模块,代码不是很长,我们在看完代码之后,再详细说明这个模块的功能 依然主函数开始 int main(int argc, char** argv) {ros::init(argc, argv, "transformMaintenance");ros::NodeHandle nh;…

oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法

参数文件:所有参数文件一般在 $ORACLE_HOME/dbs 下 sqlplus查询语句:show parameter spfile; 网络连接文件: $ORACLE_HOME/dbs/network/admin 目录中 控制文件:select * from v$controlfile; 数据文件:一般在oracleda…

LeGO-LOAM学习

前言 在学习了LOAM之后,了解到LeGO-LOAM(面向复杂情况的轻量级优化地面的雷达里程计),进行了一个学习整理。 Github:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM 论文:https://github.com/Robu…

(一)低功耗设计目的与功耗的类型

一、低功耗设计的目的 1.便携性设备等需求 电子产品在我们生活中扮演了极其重要的作用,便携性的电子设备便是其中一种。便携性设备需要电池供电、需要消耗电池的能量。在同等电能提供下,低功耗设计的产品就能够工作更长的时间。时间的就是生命&#xff…

(转)彻底学会使用epoll(一)——ET模式实现分析

注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识。是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧。另外&#xff0…

Apache 设置http跳转至HTTPS访问

为什么80%的码农都做不了架构师&#xff1f;>>> <VirtualHost>...</VirtualHost> 中添加如下配置 <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://域名/$1 [R301,L] </IfModule> 转…

(二)功耗的分析

前面学习了进行低功耗的目的个功耗的构成&#xff0c;今天就来分享一下功耗的分析。由于是面向数字IC前端设计的学习&#xff0c;所以这里的功耗分析是基于DC中的power compiler工具&#xff1b;更精确的功耗分析可以采用PT&#xff0c;关于PT的功耗分析可以查阅其他资料&#…

Hibernate创建hqll时报错

Hibernate 问题,在执行Query session.createQuery(hql) 报错误 出错截图&#xff1a; 这条语句在java运行环境下&#xff0c;直接连数据库不出错&#xff0c;如果在hiberante,struts环境下就出错 出错原因&#xff1a;jar包冲突&#xff0c;struts2和hibernate框架中都有antlr包…

.NET Core TDD 前传: 编写易于测试的代码 -- 全局状态

第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是第4篇, 将介绍全局状态引起的问题. 全局状态 全局状态, 也可以叫做应用程序状态, 它是一组变量, 这些变量维护着…

(三)系统与架构级低功耗设计

前面讲解了使用EDA工具&#xff08;主要是power compiler&#xff09;进行功耗分析的流程&#xff0c;这里我们将介绍在数字IC中进行低功耗设计的方法&#xff0c;同时也结合EDA工具&#xff08;主要是Design Compiler&#xff09;如何实现。我们的讲解的低功耗设计主要是自顶向…

(四)RTL级低功耗设计

前面介绍了系统级的低功耗设计&#xff0c;换句话说就是在系统级降低功耗可以考虑的方面。系统级的低功耗设计&#xff0c;主要是由系统级设计、具有丰富经验的人员实现&#xff0c;虽然还轮不到我们设计&#xff0c;我们了解一下还是比较好的。我们前端设计人员的重点不在系统…