1. 程式人生 > >Parcel 提供了Vue Plugin

Parcel 提供了Vue Plugin

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。

Parcel 是一個前端構建工具,Parcel 官網 將它定義為極速零配置的Web應用打包工具。沒錯,又是一個構建工具,你一定會想,為什麼前端的構建工具層出不窮,搞那麼多工具又要花時間去學習,真的有意義嗎?在 webpack 已經成為前端構建工具主流的今天,一個新的工具能有什麼優勢來站穩腳跟呢?

前言

為什麼要用 Parcel

一個好的打包工具在前端工程中佔著比較重要的地位。然,何謂之好?或功能強大,或簡單易用,或提高效率,或適合自己。在時代不斷髮展中,一個個好的工具正在被一個更好的工具所替代。隨著對 webpack 複雜配置的吐槽聲越來越多,Parcel 打著 “快速、零配置” 的旗子出來了。

Parcel 的特性

  • 快速打包:啟用多核編譯,並具有檔案系統快取
  • 打包所有資源:支援JS,CSS,HTML,檔案資源等等 - 不需要安裝任何外掛
  • 自動轉換:使用 Babel,PostCSS 和 PostHTML 自動轉換
  • 零配置程式碼拆分:使用動態 import() 語法拆分您的輸出包,只加載初始載入時所需的內容
  • 模組熱替換:不需要進行任何配置
  • 友好的錯誤記錄:以語法高亮的形式列印的程式碼幀,以幫助你查明問題

如何使用

快速使用

全域性安裝 npm i parcel-bundler -g 或 yarn add parcel-bundler global

Parcel 使用一個檔案作為入口,最好是 HTML 或 JavaScript 檔案,我們在專案中新建 index.html 檔案,直接執行命令 parcel index.html 即可啟動本地伺服器

在瀏覽器中訪問 http://localhost:1234/ ,可以通過 parcel index.html -p 8888 重新設定埠號。

無需配置檔案!

Parcel 支援 CommonJS 模組語法、ES6 模組語法、在 js 檔案中匯入 node 模組或 css、在 css 中使用 import 等,也都無需配置檔案!

 
  1. <!-- index.html --> 
  2. <!DOCTYPE html> 
  3. <html lang="en"> 
  4.     <head> 
  5.         <title>Parcel</title> 
  6.         <meta charset="UTF-8"> 
  7.     </head> 
  8.     <body> 
  9.         <h1>Hello Parcel</h1> 
  10.         <script src="src/js/index.js"></script> 
  11.     </body> 
  12. </html> 
 
  1. // src/js/index.js 
  2. const main1 = require('./main1.js');    // 支援 CommonJS 模組語法 
  3. import main2 from './main2.js';         // 支援 ES6 模組語法 
  4. import '../css/index.css';              // 支援在 js 中匯入 css 
  5. main1(); 
  6. main2(); 

上面只是簡單的使用了 Parcel,但在實際專案中,我們會用到各種技術棧,下面我們來看看 Parcel 如何整合各種技術棧的。

注意:Parcel 裡使用了 async await,因此需要 node 7.6 以上的版本才支援

整合技術棧

首先在專案下建立 package.json 、.babelrc、以及 index-react.html、index-vue.html、index-ts.html 三個作為各自技術棧 demo 的入口檔案。

在 package.json 中新增以下命令

 
  1. "scripts": { 
  2.   "react": "parcel index-react.html", 
  3.   "vue": "parcel index-vue.html", 
  4.   "ts": "parcel index-ts.html" 

React

安裝 React 的相關依賴 npm i -S parcel-bundler react react-dom babel-preset-env babel-preset-react

在 .babelrc 中新增

 
  1.   "presets": ["env","react"] 

這就是上面講到的 Parcel 的特性:自動轉換。該檔案是讓 Parcel 自動轉換 ES6 和 React JSX。

 
  1. <!-- index-react.html --> 
  2. <!DOCTYPE html> 
  3. <html lang="en"> 
  4.     <head> 
  5.         <title>Parcel React</title> 
  6.         <meta charset="UTF-8"> 
  7.     </head> 
  8.     <body> 
  9.         <div id="react-app"></div> 
  10.         <script src="src/react/index.js"></script> 
  11.     </body> 
  12. </html> 

執行命令 npm run react 開啟 http://localhost:1234/ 即可看到 Hello React

Vue

就在不久前,Parcel 終於支援 .vue 檔案了,只需要引入一個包 parcel-plugin-vue,不需要任何配置,即可打包 Vue 了。

安裝 Vue 相關依賴,npm i -S vue parcel-plugin-vue

 
  1. <!-- index-vue.html --> 
  2. <!DOCTYPE html> 
  3. <html lang="en"> 
  4.     <head> 
  5.         <title>Parcel Vue</title> 
  6.         <meta charset="UTF-8"> 
  7.     </head> 
  8.     <body> 
  9.         <div id="vue-app"></div> 
  10.         <script src="src/vue/index.js"></script> 
  11.     </body> 
  12. </html> 
 
  1. // src/vue/index.js 
  2. import Vue from 'vue'; 
  3. import App from './app.vue'; 
  4. new Vue({ 
  5.     el: '#vue-app', 
  6.     render: h => h(App) 
  7. }) 
 
  1. <!-- src/vue/app.vue --> 
  2. <template> 
  3.     <div> 
  4.         <h1>Hello Vue</h1> 
  5.     </div> 
  6. </template> 

執行命令 npm run vue 開啟 http://localhost:1234/ 即可看到 Hello Vue

TypeScript

整合 TypeScript 也非常簡單,只需要安裝 typescript 模組即可,也無需配置。

安裝 TypeScript 相關依賴,npm i -S typescript

 
  1. <!-- index-ts.html --> 
  2. <!DOCTYPE html> 
  3. <html lang="en"> 
  4.     <head> 
  5.         <title>Parcel TypeScript</title> 
  6.         <meta charset="UTF-8"> 
  7.     </head> 
  8.     <body> 
  9.         <h1 id="ts-app"></h1> 
  10.         <script src="src/typescript/index.ts"></script> 
  11.     </body> 
  12. </html> 
 
  1. interface Name { 
  2.     value: string; 
  3. function showName(name: Name){ 
  4.     document.getElementById('ts-app').innerHTML = 'Hello ' + name.value; 
  5. showName({value: 'TypeScript'}); 

執行命令 npm run ts 開啟 http://localhost:1234/ 即可看到 Hello TypeScript

Sass

將 Sass 在上面技術棧中使用也非常簡單,只需要安裝 node-sass 模組即可,也無需配置。

安裝 Sass 相關依賴,npm 可能會下載不成功,這裡使用 cnpm 來安裝,cnpm i -S node-sass

在 src/vue/app.vue 中來使用 Sass

 
  1. <!-- src/vue/app.vue --> 
  2. <template> 
  3.     <div class="main"> 
  4.         <h1>Hello Vue</h1> 
  5.     </div> 
  6. </template> 
  7. <style lang="scss"> 
  8.     @import '../sass/main.scss'; 
  9. </style> 
 
  1. .main{ 
  2.     h1{ 
  3.         color: #0099ff; 
  4.     } 

再次執行命令 npm run vue 即可看到帶有藍色字型的 Hello Vue

以上的 demo 原始碼地址:parcel-demo

生產環境

  • 設定環境變數: parcel build index.html NODE_ENV=production
  • 設定輸出目錄: parcel build index.html -d build/output
  • 設定要提供服務的公共 URL: parcel build index.html --public-url ./
  • 禁用壓縮: parcel build index.html --no-minify
  • 禁用檔案系統快取: parcel build index.html --no-cache

疑問

  • 輸出目錄裡是否可以再分子目錄,例如 css / js / img 等?
  • 頁面引用的 html 被打包後也會重新命名成很長的一串,是否可以不重新命名?

前端情報局

鑑於最近 Parcel 打著零配置的口號俘獲了不少前端開發者的心,並且伴隨著吐槽 webpack 使用配置複雜的聲音。webpack 核心開發者特意解釋道,webpack v4.0.0-alpha.1 中加入了 mode 這個配置,這使得很多複雜繁瑣的配置(諸如: sourcemaps、 tree shaking,、minification、scope hoisting)webpack 都替我們做好了,對於使用者來說,基本上也是零配置了。

原文連結:http://zhuanlan.51cto.com/art/201712/562415.htm

Fundebug提供JavaScript監控,支援所有主流前端框架,微信小程式監控,微信小遊戲監控,後端Node.js監控。