前端工程化以及如何通過Node.js中babel來編譯es6模塊化代碼

2021-01-08 兔哥學前端

傳統開發模式的主要問題有兩個一是命名衝突 ,二是文件依賴。解決這兩個問題的方法就是模塊化

什麼是模塊化?

模塊化就是把單獨的一個功能封裝到一個模塊(文件)中,模塊之間相互隔離,但是可以通過特定的接口公開內部成員,也可以依賴別的模塊

模塊化開發的好處:方便代碼的重用,從而提升開發效率,並且方便後期的維護

一開始模塊化規範有哪些?

在一開始模塊化是分為兩大模塊來進行規範的 :

一 ,是瀏覽器端模塊化規範 , 主要有兩種模塊化的方法 :1.AMD(Require.js ),2.CMD(Sea.js )

瀏覽器端模塊化方式

二,是伺服器端模塊化規範 ,主要運用CommonJS進行模塊化開發 ,CommonJS將模塊分為單文件模塊與 包 ,模塊成員導出通過module.exports 和 exports ,模塊成員導入通過require('模塊標識符')來進行模塊化開發

ES6模塊化

上面這些都是在 ES6 模塊化規範誕生之前,Javascript 社區提出的 AMD、CMD、CommonJS 等模塊化規範。但是,這些社區提出的模塊化標準,還是存在一定的差異性與局限性、並不是瀏覽器與伺服器通用的模塊化標準 例如:

AMD 和 CMD 適用於瀏覽器端的 Javascript 模塊化 ,CommonJS 適用於伺服器端的 Javascript 模塊化

並不統一 ,還是比較亂 ,後來ES6 語法規範中,在語言層面上定義了 ES6 模塊化規範,就形成了大一統的模塊化規範 - ES6模塊化

ES6模塊化規範中定義:

每個 js 文件都是一個獨立的模塊.導入模塊成員使用 import 關鍵字暴露模塊成員使用 export 關鍵字之後就形成了前端工程化下面在:

Node.js中通過babel體驗ES6模塊化

1.首先電腦要安裝Node.js 環境必須v10以上的版本自帶npm包管理工具不需要再單獨安裝npm

2.創建工程項目文件夾

名稱不要使用中文 不能使用 babel 因為會和第三方模塊babel名稱衝突 ,例如:

創建工程項目文件夾

3.在項目文件夾中打開cmd窗口

或者直接window+R打開在cd到目錄中

4.初始化項目

輸入命令 npm init -y 初始化文件自動生成package.json文件

輸入命令 npm init -y回車
文件夾下自動生成package.json文件

5. 安裝babel依賴模塊

由於es6的很多語法特性在舊的瀏覽器下支持不好,我們在使用的時候需要babel將其轉化為es5語法 ,不然瀏覽器會報錯導致我們做的頁面出錯

(1.先輸入命令 npm i -D @babel/core @babel/cli @babel/preset-env @babel/node

安裝babel依賴模塊

(2.在輸入命令 npm i -S @babel/polyfill

npm i -S @babel/polyfill
然後我們發現文件夾下又生成了文件

6. 然後在項目根目錄創建文件babel.config.js

手動創建一個文件babel.config.js

7.在babel.config.js文件中添加如下配置

添加配置

targets配置項指定運行環境,就是我們可以配置對應目標瀏覽器環境,那麼babel就會編譯出對應目標瀏覽器環境可以運行的代碼。

8. 創建一個index.js文件然後編寫代碼

在 index.js中來編寫 es6 語法的 js 代碼

msg

9.執行代碼

運行 npx babel-node index.js 命令 執行 index.js ,輸出msg

msg=123編譯成工

模塊化

10.再創建一個moudel.js

利用es6模塊化的方式將moudel.js 裡面的內容 導出export default

導出export default私有變量

利用es6模塊化的方式將moudel.js內容 import 導入 index.js ,index就能用moudel裡面的變量了

import 導入moudel.js
編譯成功

11.按需導出或者按需導入

按需導需要哪一部分導入哪一部分

12.直接導入

直接導入並執行模塊代碼 ,moudel裡面是一些可執行代碼 ,導入index會直接執行

index會直接輸出結果

相關焦點

  • 前端工程化(ES6模塊化和webpack打包css,less,scss,圖片,字體...
    模塊化規範傳統開發模式主要問題/* 1. 命名衝突 2. 文件依賴*/通過模塊化解決上述問題/* 模塊化就是把單獨的一個功能封裝在一個模塊(文件)中,模塊之間相互隔離, 但是可以通過特定的接口公開內部成員,也可以依賴別的模塊.
  • JavaScript中常用es6語法整理總結
    1.let(變量) 與 const(常量)在es6中我們通常用let來定義變量和const來定義常量 ,它們都是塊級作用域 ,在同一個代碼塊中不允許重複聲明它們的特點與var的區別:var在JavaScript中之前定義變量,我們用 var
  • 你是怎麼理解前端工程化的?
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫什麼是前端工程化?工程化是一種思想,而不是某種技術。其主要目的為了提高效率和降低成本,即提高開發過程中的開發效率,減少不必要的重複工作時間等慄子要蓋一棟大樓,假如我們不進行工程化的考量那就是一上來踮起瓦刀、磚塊就開幹,直到把大樓壘起來,這樣做往往意味著中間會出現錯誤,要推倒重來或是蓋好以後結構有問題但又不知道出現在哪誰的責任甚至會在某一天轟然倒塌。
  • 上微前端後,我司的祖傳代碼有救了
    楊昊一: 我一直覺得使用什麼技術一定要用最適合自己的,不能僅僅因為微前端很火就強行給自己的項目上這個技術。我們應用微前端技術是因為業務發展到了一定程度很自然的就想到需要用微前端來解決各種代碼開發、項目需求的問題。再比如那種需要很模塊化組裝頁面的網站也就非常適合使用微前端。
  • Node.js 開發者們都在做什麼?
    本次的調查結果頁讓我們發現開發者們在異步流程控制、代碼調試、持續集成和包的搜索方面的關注和選擇。同時也告訴我們Node.js開發者面臨著一大痛點:調試。本次調查從七月11日到八月15日總共歷時35天,總共有1126名node.js開發者參與了本次的調查。其中55%的開發者具有兩年以上的node.js開發經驗,26%具有1到兩年的經驗。
  • 「原創」如何高效管理你的js代碼
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫1.為什麼需要管理好js代碼1.1 你有遇到這些情況嗎其他項目使用自己慢慢豐富的工具類,你是copy過去的?難免需要刪除整個node_modules並重裝依賴庫,你會因為重寫過某些庫的代碼而糾結?
  • 你應該知道的前端小知識
    HTML5新的標準中允許使用new Worker的方式來開啟一個新的線程,去運行一段單獨的js文件腳本,但是在這個新線程中嚴格的要求了可以使用的功能,比如說他只能使用ECMAScript, 不能訪問DOM和BOM。這也就限制死了多個線程同時操作DOM元素的可能。
  • Node.js 2018 用戶調查:最愛 Express,最想學 Rust
    調查發現,Node.js 通常被用於資料庫、前端框架/庫、Node.js 框架、負載均衡、容器/原生雲服務中。在日常工作的使用中,大部分參與調查的開發者認為 Node.js 有幫助他們提高生產力,或者是有滿足他們的開發需求。
  • SDCC 2015前端專場札記:Facebook、百度、騰訊、美團、餓了麼等...
    webpack 配合  React Hot Loader 還能實現代碼熱插拔,開發效率上也能提高很多,有時候等 browserify 編譯其實也挺痛苦的。大型系統的分布式編譯挺常見,但前端代碼倒真是第一次聽說,目前開發的產品用的是grunt + browserify, 雖然代碼並不是很多,但也會有個不長不短的編譯時間, 也是有點難受。同時我非常好奇美團的前端代碼究竟是有多少,都到了分布式編譯的地步。
  • ES6 常用知識匯總,ES6模塊化如何使用,開發環境如何打包?
    ES6模塊化如何使用,開發環境如何打包?/demo'console.log(util1)fn1()fn2()2.開發環境配置BabelES6新語法需要進行編譯,即轉換為ES5或者更早版本的語法,這個時候就需要Babel來進行轉換Babel是什麼?
  • 如何寫一個vue組件專題及常見問題 - CSDN
    如何使用vue寫一個組件庫新建vue項目使用vue-cli初始化一個項目:vue init webpack VueComponentcd VueComponentnpm installnpm run dev以上就新建好了一個vue項目項目目錄首先,定義好目錄,經過觀察大多數的組件庫,基本是這樣的目錄
  • Node.js 入門 - 使用 Express + Sequelize 實作 API
    課程簡介現代前端開發,無論做什麼都基本離不開 Node.js了。有了 Node.js,js 就成了一個無所不能的語言。無論你是使用 Webpack來打包前端項目,或者來開發Api接口,還是使用 React Native開發原生 App,亦或是開發桌面軟體,Node.js都是必不可少的東西了。Node.js 是一個基於 Chrome V8 引擎的 Javascript 運行環境課程主要講解 如何使用 nvm來安裝 Node.js,以及 npm的用法。
  • 推薦一些 GitHub 上值得前端學習的開源實戰項目,進階必看!
    最近好多同學問我了解找一些學習的實戰項目;看一個別人寫的優秀的項目,從中可以學到很多;比如代碼的規範,項目的結構;從項目作者每次提交記錄,去學習一些別人的開發思維以及開發整個項目的流程;下面我主要找了一些比較火的一些框架以及 node 項目。
  • Angular、React 當前,Vue.js 優劣幾何?
    在過去一年裡,前端開發發展迅速,前端工程師的薪資亦是水漲船高。2019 更是熱度不減,而作為近年來尤為熱門的前端框架,Vue.js 自是積累了大量關注。那麼,Vue.js 是適合你的框架嗎?因此,我想分享一些有關 Vue.js 的信息,以及我在使用 Vue.js 來構建生產應用中獲得的一些個人經驗。現在讓我們一起來問這個問題:Vue.js 是適合你的框架嗎?注意:我並不想說 Vue.js 比 React、Angular 或者其它的任何前端框架好。這裡我分享的只是我在項目中使用 Vue.js 而獲得的一些個人體驗。
  • 22個ES6面試、複習乾貨知識點匯總
    babel是什麼,有什麼作用?答:babel是一個 ES6 轉碼器,可以將 ES6 代碼轉為 ES5 代碼,以便兼容那些還沒支持ES6的平臺。let有什麼用,有了var為什麼還要用let?答:module、export、import是ES6用來統一前端模塊化方案的設計思路和實現方案。
  • Web前端和後端有什麼區別(下)
    Jquery是封裝js的js插件。其目的是操作更方便,寫代碼更少。開始使用jquery也非常簡單。那些和js一樣,只是換成了jq代碼。其他的百度就夠了。 5、最好的後臺語言是 java, php,為什麼?
  • 教程:通過 Subspace 和 Infura 實現實時前端數據
    在本指南中,我們將介紹如何跟蹤已部署合約的交易,以及當它們在每個新確認的區塊中進行更新時,如何在前端顯示和更新這些數字。我們以跟蹤 Uniswap 上的 Dai<>Eth 交易為例來進行說明。
  • Web前端三大主流框架是什麼?
    前端框架對於前端開發的好處是顯而易見的,比如減少代碼中因失誤產生的bug,還能大大節約時間和人力成本,縮短開發周期等等。目前,市面上Web前端三大主流框架分別指的是Angular、React和Vue,在Web前端開發中,它們平分秋色,各有優劣。