详解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 相关文章推荐
jCallout 轻松实现气泡提示功能
Sep 22 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
javascript html5移动端轻松实现文件上传
Mar 27 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
浅谈JavaScript中this的指向更改
Jul 28 Javascript
vue抽出组件并传值实例
Jul 31 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中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
jQuery AJAX与jQuery事件的分析讲解
2019/02/18 jQuery
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
python列表的增删改查实例代码
2018/01/30 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
为什么会有内存对齐
2016/10/10 面试题
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
优秀本科毕业生自荐信
2014/07/04 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS