详解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 幻灯片插件(带缩略图功能)
Jan 24 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
js Form.elements[i]的使用实例
Nov 13 Javascript
js下拉框二级关联菜单效果代码具体实现
Aug 03 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
ajax+jQuery实现级联显示地址的方法
May 06 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
微信小程序实现图片翻转效果的实例代码
Sep 20 Javascript
Vue+Element实现网页版个人简历系统(推荐)
Dec 31 Javascript
RxJS在TypeScript中的简单使用详解
Apr 13 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做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
微信跳一跳python代码实现
2018/01/05 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Python画图高斯分布的示例
2019/07/10 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
Python tkinter模版代码实例
2020/02/05 Python
python next()和iter()函数原理解析
2020/02/07 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
中职生自荐信
2013/10/13 职场文书
写给保洁员表扬信
2014/01/08 职场文书
品质主管岗位职责
2014/03/16 职场文书
2015年度对口支援工作总结
2015/07/22 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
Python简易开发之制作计算器
2022/04/28 Python