详解Vue快速零配置的打包工具——parcel


Posted in Javascript onJanuary 16, 2018

本文介绍了Vue快速零配置的打包工具——parcel,分享给大家,具体如下:

特性

  1. 快速打包
  2. 打包所有资源
  3. 自动转换
  4. 代码拆分
  5. 模块热替换
  6. 友好的错误记录

如何工作

Parcel 将 资源 树转换成 包(bundles) 树。许多其它的打包工具基本上是基于 JavaScript 资源,还有附加在其上的其它格式的资源。例如,在 JS 文件中内联成字符串。 Parcel是对文件类型无感知的,它能按你所期待的方式那样与任意类型的资源工作,且毋须配置。

构建资源树

Parcel 接受单个入口资源作为输入,可以是任意类型:JS、HTML、CSS、图片文件等等。在 Parcel 中定义了许多不同的资源类型,它知道如何去处理特定的文件类型。资源会被解析,资源的依赖会被提取,资源会被转换成最终编译好的形态。此过程创建了一个资源树。

构建文件束树

一旦资源树被构建好,资源会被放置在文件束树中。首先一个入口资源会被创建成一个文件束,然后动态的 import() 会被创建成子文件束 ,这引发了代码的拆分。当不同类型的文件资源被引入,兄弟文件束就会被创建。例如你在 JavaScript 中引入了 CSS 文件,那它会被放置在一个与 JavaScript 文件对应的兄弟文件束中。如果资源被多于一个文件束引用,它会被提升到文件束树中最近的公共祖先中,这样该资源就不会被多次打包。

打包

在文件束树被构建之后,每个文件束都会被 packager 写到一个特定文件类型的文件中。packagers 知道如何从每个资源中将代码合并起来,生成到最终被浏览器加载的文件中。

配置

初始化项目

npm install -g parcel
 mkdir xxx && cd xxx && npm init -y

转换

Babel

npm install babel-preset-env --save-dev

根目录配置.babelrc

{
  "presets": ["env"]
 }

PostCSS

npm install postcss-modules autoprefixer --save-dev

根目录配置.postcssrc

{
  "modules": true,
  "plugins": {
   "autoprefixer": {
    "grid": true
   }
  }
 }

支持vue

npm install parcel-plugin-vue --save-dev

添加entry

import App from './App.vue'
 import router from './router/index.js'
 import './assets/js/rem.js'
 window.onload = () => {
  const vm = new Vue({
   el: '#app',
   router,
   render: h => h(App)
  })
 }

配置index.html

<body>
  <div id="app"></div>
  <script src="入口文件"></script>
 </body>

配置路由(代码拆分--懒加载)

{
   path: 'home',
   component: () =>import('../pages/home.vue')
 }

import()返回的是一个promise,所以也可以用 async/await 语法,当你想在本地使用 async/await 语法,请引入 babel-polyfill

区分生产环境和开发环境,配置package.json.

dev --- 开发环境

build --- 生产环境

"scripts": {
   "dev": "parcel index.html -p 3700",
   "build": "parcel build index.html"
  }

大功告成

访问http://localhost:3700/home

详解Vue快速零配置的打包工具——parcel

此demo是vue + parcel + grid +stylus完成 : parcel-vue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
Jul 01 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
javascript基于原型链的继承及call和apply函数用法分析
Dec 15 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
Vue render深入开发讲解
Apr 13 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 Javascript
ES6中的Javascript解构的实现
Oct 30 Javascript
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
vue watch自动检测数据变化实时渲染的方法
Jan 16 #Javascript
动态加载权限管理模块中的Vue组件
Jan 16 #Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
Jan 15 #Javascript
解析Angular 2+ 样式绑定方式
Jan 15 #Javascript
基于jquery的on和click的区别详解
Jan 15 #jQuery
仿淘宝JSsearch搜索下拉深度用法
Jan 15 #Javascript
vue2.0 父组件给子组件传递数据的方法
Jan 15 #Javascript
You might like
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP图像处理类库及演示分享
2015/05/17 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
优化javascript的执行速度
2010/01/23 Javascript
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
详解python读取和输出到txt
2019/03/29 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python hashlib模块加密过程解析
2019/11/05 Python
详解Python3中的 input() 函数
2020/03/18 Python
Python更换pip源方法过程解析
2020/05/19 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
小学生秋游活动方案
2014/02/23 职场文书
群众路线领导对照材料
2014/08/23 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS