• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > 详解基于webpack和vue.js搭建开发环境

详解基于webpack和vue.js搭建开发环境

作者:我是糖糖 字体:[增加 减小] 来源:互联网 时间:2017-05-11

我是糖糖通过本文主要向大家介绍了webpack详解,vue.js webpack,webpack vue2.0,webpack打包vue,vue webpack等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会改变你自己。秉承着“不听老人言,吃亏在眼前”的优良作风,我还是决定玩火自焚。

问题所在

之前的项目总结为以下内容:

1、AMD模块规范开发,使用requirejs实现,使用rjs打包,最终导致的结果是,输出的项目臃肿,肿的就像一坨狗不理……不忍直视

2、使用gulp进行打包,这一点貌似没有可吐槽的地方,毕竟都是被grunt折磨过来的……

3、数据的渲染使用模板引擎,这就意味着你要手动管理DOM,这样,你的业务代码参杂着你的数据处理、DOM管理,满屏幕的毛线……

4、模块化不足,虽然使用require进行了模块管理,但是大部分业务逻辑还是充斥在一个文件里,这与最近流行的组件化概念冰火不容,拒绝落后……

5、诸如 扩展性 、 维护性 我想早已不言而喻,不需赘述,再述就真TM是累赘了。

新框架要解决的问题:

1、要使构建输出的项目像你邻家小妹妹一样、瘦的皮包骨。(也许是营养不良)

2、要实现真正的模块化、组件化的开发方式,真正去解决维护难、扩展难的问题。(从此不怕产品汪)

3、业务逻辑专注数据处理,手动管理DOM的年代就像……像什么呢?(毕竟成人用品也越来越自动化了)

4、等等…….(其实好处无需赘述,来,往下看)

为了达成以上目标,我们探讨一下解决方案:

1、老项目的构建输出为什么臃肿?

答:因为使用的是require的rjs进行构建打包的,了解rjs的都知道,它会把项目所有依赖都打包在一个文件里,如果项目中有很多页面依赖这个模块,那么rjs并不会把这个模块提取出来作为公共模块,所以就会有很多复制性的内容,所以项目自然臃肿。

解决方案:使用webpack配合相应的loader,来完成模块加载和构建的工作。

2、老项目为什么模块化的不足?

答:老项目的模块化,仅仅体现在js层面,解决了模块引用的问题,但在开发方式上,依然可以看做是过程式的,这样的结果就导致了项目的难扩展和难维护,让开发人员在与产品汪的对峙中,并不从容。

解决方案:Vue.js能够很好的解决组件化的问题,配合 Vue.js 官方提供的 vue-loader 能够很好的结合webpack做组件化的开发架构。

3、如何避免手动管理DOM?

答:如果你在做数据展示这一块的开发工作,相信你一定体会颇深,发送http请求到服务端,拿到返回的数据后手动渲染DOM至页面,这是最原始的开发方式,无非再加一个模板引擎之类的,但最终还是避免不了手动渲染,如果页面逻辑复杂,比如给你来一个翻页的功能,再来一个筛选项,估计你会觉得世界并不那么美好。

解决方案:MVVM模式能够很好的解决这个问题,而Vue.js的核心也是MVVM。

webpack

你肯定听说过webpack,如果直接对你描述什么是webpack你可能感受不到他的好处,那么在这之前,我相信你肯定使用过gulp或者grunt,如果你没使用过也可以,至少你要听说过并且知道gulp和grunt是干什么的,假如这个你还不清楚,那么你并不是一个合格的前端开发人员,这篇文章也不适合你,你可以从基础的地方慢慢学起。

gulp和grunt对于每一个前端开发人员应该是不陌生的,它们为前端提供了自动化构建的能力,并且有自己的生态圈,有很多插件,使得我们告别刀耕火种的时代,但是它们并没有解决模块加载的问题,比如我们之前的项目是使用gulp构建的,但是模块化得工作还是要靠require和rjs来完成,而gulp除了完成一些其他任务之外,就变成了帮助我们免除手动执行命令的工具了,别无它用。

而webpack就不同了,webpack的哲学是一切皆是模块,无论是js/css/sass/img/coffeejs/ttf….等等,webpack可以使用自定义的loader去把一切资源当做模块加载,这样就解决了模块依赖的问题,同时,利用插件还可以对项目进行优化,由于模块的加载和项目的构建优化都是通过webpack一个”人“来解决的,所以模块的加载和项目的构建优化并不是无机分离的,而是有机的结合在一起的,是一个组合的过程,这使得webpack在这方面能够完成的更出色,这也是webpack的优势所在。

如果你看不懂上面的描述,没关系,你只需要知道一下几点:

1、过去使用require和rjs等进行模块加载的方式,可以替换为webpack提供的指定loader去完成,你也可以自己开发加载特定资源的loader。

2、过去使用gulp和grunt完成项目构建优化的方式,可以替换成webpack提供的插件和特定的配置去完成。

3、由于模块的加载和项目的构建优化有机的结合,所以webpack能够更好的完成这项工作

4、并不是说有了webpack就淘汰的gulp等,有些特定的任务,还是要使用gulp去自定义完成的。但是不保证webpack的未来发展趋势会怎么样。

Vue.js

Vue.js是一个MVVM模式的框架,如果读者有angular经验,一定能够很快入门Vue的,那么问题来了,为什么使用Vue而不用angular,

首先,Vue的体积小,轻量在移动端开发始终是一个不可忽略的话题,其次,Vue在实现上与angular有本质的区别,读者可以通过下面两个链接来了解:

1、Vue的变化追踪和计算属性的区别等

2、Vue 与 angular 及 react 等框架的对比

3、第三点就是Vue提供了webpack的loader —-> [vue-loader],使用它可以让项目的组件化思想更加清晰

综上所述,这就是选用Vue的原因

npm 和 nodejs

npm 的全称是 nodejs包管理,现在越来越多的项目(包)都可以通过npm来安装管理,nodejs是js运行在服务器端的平台,它使得js的能力进一步提高,我们还要使用nodejs配合 webpack 来完成热加载的功能。所以读者最好有nodejs的开发经验,如果有express的经验更好。

让我们一步一步从零搭建这个项目

首先新建一个目录,名为 myProject ,这是我们的项目目录。然后执行一些基本的步骤,比如 npm init 命令,在我们的项目中生成 package.json 文件,这几乎是必选的,因为我们的项目要有很多依赖,都是通过npm来管理的,而npm对于我们项目的管理,则是通过package.json文件:

 npm init
</div>

执行npm init之后,会提示你填写一些项目的信息,一直回车默认就好了,或者直接执行 npm init -y 直接跳过询问步骤

然后我们新建一个叫做 app 的目录,这个是我们页面模块的目录,再在app目录下建立一个index目录,假设这个是首页模块的目录,然后再在index目录下建立一个 index.html 文件和 index.js 文件,分别是首页入口html文件和主js文件,然后再在index目录下建立一个components目录,这个目录用作存放首页组件模块的目录,因为我们最终要实现组件化开发。这样,当你完成上面的步骤后,你的项目看上去应该是这样的:

 

接下来通过npm安装项目依赖项:

 npm install\
 webpack webpack-dev-server\
 vue-loader vue-html-loader css-loader vue-style-loader vue-hot-reload-api\
 babel-loader babel-core babel-plugin-transform-runtime babel-preset-es2015\
 babel-runtime@5\
 --save-dev

npm install vue --save
</div>

这个时候,你的package.json文件看起来应该是这样的:

 "devDependencies": {
 "babel-core": "^6.3.17",
 "babel-loader": "^6.2.0",
 "babel-plugin-transform-runtime": "^6.3.13",
 "babel-preset-es2015": "^6.3.13",
 "babel-runtime": "^5.8.34",
 "css-loader": "^0.23.0",
 "vue-hot-reload-api": "^1.2.2",
 "vue-html-loader": "^1.0.0",
 "vue-style-loader": "^1.0.0",
 "vue-loader": "^7.2.0",
 "webpack": "^1.12.9",
 "webpack-dev-server": "^1.14.0"
 },
 "dependencies": {
 "vue": "^1.0.13"
 },
</div>

我们安装了 babel 一系列包,用来解析ES6语法,因为我们使用ES6来开发项目,如果你不了解ES6语法,建议你看一看阮老师的教程,然后我们安装了一些loader包,比如css-loader/vue-loader等等,因为webpack是使用这些指定的loader去加载指定的文件的。

另外我们还使用 npm install vue –save 命令安装了 vue ,这个就是我们要在项目中使用的vue.js,我们可以直接像开发nodejs应用一样,直接require(‘vue');即可,而不需要通过script标签引入,这一点在开发中很爽。

安装完了依赖,编辑以下文件并保存到相应位置:

1、index.html文件:

 <!DOCTYPE html>
<html lang="zh">
 <head>
 <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, user-scalable=no">
 <meta charset="utf-8">
 <ti



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解webpack 配合babel 将es6转成es5 超简单实例
  • 详解vue-cli + webpack 多页面实例应用
  • 详解用vue-cli来搭建vue项目和webpack
  • 详解基于webpack和vue.js搭建开发环境
  • WebPack基础知识详解

相关文章

  • 2017-05-11微信小程序 数据封装,参数传值等经验分享
  • 2017-05-11JS 插件dropload下拉刷新、上拉加载使用小结
  • 2017-05-11JSON与js对象序列化实例详解
  • 2017-05-11vue-router:嵌套路由的使用方法
  • 2017-05-11浅谈jQuery中事情的动态绑定
  • 2017-05-11bootstrap侧边栏圆点导航
  • 2017-05-11JS去除字符串中空格的方法
  • 2017-05-11javascript实现多张图片左右无缝滚动效果
  • 2017-05-11微信小程序 仿美团分类菜单 swiper分类菜单
  • 2017-05-11jQuery基于Ajax方式提交表单功能示例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • JavaScript基于DOM操作实现简单的数学运算功能示例
    • fullCalendar中文API官方文档
    • 详解angular element()方法使用
    • JavaScript组件开发之输入框加候选框
    • Javascript实现数组中的元素上下移动
    • Js实现中国公民身份证号码有效性验证实例代码
    • 微信小程序学习(4)-系统配置app.json详解
    • Javascript中数组去重与拍平的方法示例
    • 使用jQuery操作DOM的方法小结
    • 微信小程序 弹幕功能简单实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有