详解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 相关文章推荐
学习ExtJS Window常用方法
Oct 07 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
Js四则运算函数代码
Jul 21 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
Vue2组件tree实现无限级树形菜单
Mar 29 Javascript
JavaScript如何一次性展示几万条数据
Mar 30 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
Aug 27 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 Javascript
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之第八天
2006/10/09 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
Jquery优化效率 提升性能解决方案
2010/09/06 Javascript
jQuery中jqGrid分页实现代码
2011/11/04 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python创建学生成绩管理系统
2019/11/22 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
高中生学习总结的自我评价范文
2013/10/13 职场文书
中职应届生会计求职信
2013/10/23 职场文书
工程业务员岗位职责
2013/12/31 职场文书
寒假家长评语大全
2014/04/16 职场文书
详解JavaScript中Arguments对象用途
2021/08/30 Javascript
零基础学java之循环语句的使用
2022/04/10 Java/Android
idea下配置tomcat避坑详解
2022/04/12 Servers