<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Node中使用ES6語法的基礎教程

        來源:懂視網 責編:小采 時間:2020-11-27 22:22:14
        文檔

        Node中使用ES6語法的基礎教程

        Node中使用ES6語法的基礎教程:相關背景介紹 我們現在大多數人用的語法javascript 其實版本是ecmscript5,也是就es5。這個版本己經很多年了,且完美被各大瀏覽器所支持。所以很多學js的朋友可以一直分不清楚es5和javscript的關系。javascript是一門編程語言,那么它就會有版本,es5還
        推薦度:
        導讀Node中使用ES6語法的基礎教程:相關背景介紹 我們現在大多數人用的語法javascript 其實版本是ecmscript5,也是就es5。這個版本己經很多年了,且完美被各大瀏覽器所支持。所以很多學js的朋友可以一直分不清楚es5和javscript的關系。javascript是一門編程語言,那么它就會有版本,es5還

        相關背景介紹

        我們現在大多數人用的語法javascript 其實版本是ecmscript5,也是就es5。這個版本己經很多年了,且完美被各大瀏覽器所支持。所以很多學js的朋友可以一直分不清楚es5和javscript的關系。javascript是一門編程語言,那么它就會有版本,es5還是es6 就就是它的版本號。最新版es7己經在緊鑼密布的進行中,它最新的語法會讓我們寫代碼更新的行云流水。

        引言

        Node本身已經支持部分ES6語法,但是import export,以及async await(Node 8 已經支持)等一些語法,我們還是無法使用。為了能使用這些新特性,我們就需要使用babel把ES6轉成ES5語法

        安裝babel

        npm install babel-cli -g

        <!-- more -->

        基礎知識

        babel的配置文件是.babelrc

        {
         "presets": []
        }

        新建一個demo文件夾,文件夾下新建 1.js

        const arr = [1, 2, 3];
        arr.map(item => item + 1);

        同時新建.babelrc配置文件

        {
         "presets": []
        }

        終端運行

        babel 1.js -o dist.js

        可以看見,在文件夾下,新建了一個dist.js,這就是babel轉碼后的文件

        但是,dist.js目前是沒有任何變化的,因為我們在配置文件里面沒有聲明轉碼規則,所以babel無法轉碼

        安裝轉碼插件

        npm install --save-dev babel-preset-es2015 babel-preset-stage-0

        修改配置文件

        {
         "presets": [
         "es2015",
         "stage-0"
         ]
        }

        es2015可以轉碼es2015的語法規則,stage-0可以轉碼ES7語法(比如async await)

        再次運行終端

        babel 1.js -o dist.js

        可以看見,箭頭函數被轉碼了

        var arr = [1, 2, 3];
        arr.map(function (item) {
         return item + 1;
        });

        我們試下async await

        async function start() {
         const data = await test();
         console.log(data);
        }
        function test() {
         return new Promise((resolve, reject) => {
         resolve('ok');
         })
        }

        轉碼后的文件

        'use strict';
        var start = function () {
         var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
         var data;
         return regeneratorRuntime.wrap(function _callee$(_context) {
         while (1) {
         switch (_context.prev = _context.next) {
         case 0:
         _context.next = 2;
         return test();
        
         case 2:
         data = _context.sent;
        
         console.log(data);
        
         case 4:
         case 'end':
         return _context.stop();
         }
         }
         }, _callee, this);
         }));
         return function start() {
         return _ref.apply(this, arguments);
         };
        }();
        function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
        
        function test() {
         return new Promise(function (resolve, reject) {
         resolve('ok');
         });
        }

        再試下 import export

        util.js

        export default function say() {
         console.log('2333');
        }

        1.js

        import say from './util';
        say();

        這次,要把1.js和util.js都轉碼,我們可以把整個文件夾轉碼

        babel demo -d dist

        新生成的dist文件夾下,就有轉碼后的文件。可以看見,轉碼后,仍然使用的是module.exportsCMD模塊加載

        babel-preset-env

        上面的轉碼其實有個缺陷,就是babel會默認把所有的代碼轉成es5,這意味著,即使node支持let關鍵字,轉碼后,也會被轉成var

        我們可以使用babel-preset-env這個插件,它會自動檢測當前node版本,只轉碼node不支持的語法,非常方便

        npm install --save-dev babel-preset-env

        .babelrc

        {
         "presets": [
         ["env", {
         "targets": {
         "node": "current"
         }
         }]
         ]
         }

        1.js

        class F {
         say() {
         
         }
        }
        const a = 1;
        babel 1.js -o dist.js

        編譯出來后

        "use strict";
        class F {
         say() {}
        }
        const a = 1;

        可以看見,class和const并沒有被轉碼,因為當前node版本(8.9.3)支持該語法

        在實際項目中使用ES6語法

        Koa2需要Node v7.6.0以上的版本來支持async語法,同時,我們也想在Koa2中使用import模塊化寫法

        npm install --save-dev babel-register
        npm install koa --save

        新建一個文件夾app

        util.js

        export function getMessage() {
         return new Promise((resolve, reject) => {
         resolve('Hello World!');
         })
        }

        app.js

        import Koa from 'koa';
        import { getMessage } from './util'
        const app = new Koa();
        app.use(async ctx => {
         const data = await getMessage();
         ctx.body = data;
        });
        app.listen(3000);

        如果直接啟動文件,肯定會報錯

        node app

        我們需要一個入口文件,來轉碼

        index.js

        require("babel-register");
        require("./app.js");
        node index

        訪問http://localhost:3000/可以看見頁面了!

        babel-register是實時轉碼的,所以實際發布時,應該先把整個app文件夾轉碼

        babel app -d dist

        這次,只要啟動dist下的app.js即可

        node app

        總結

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Node中使用ES6語法的基礎教程

        Node中使用ES6語法的基礎教程:相關背景介紹 我們現在大多數人用的語法javascript 其實版本是ecmscript5,也是就es5。這個版本己經很多年了,且完美被各大瀏覽器所支持。所以很多學js的朋友可以一直分不清楚es5和javscript的關系。javascript是一門編程語言,那么它就會有版本,es5還
        推薦度:
        標簽: 教程 中使用 語法
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产aⅴ无码专区亚洲av| 免费一级毛片在线观看| 亚洲最大成人网色| 久久精品乱子伦免费| 亚洲电影一区二区| 久久99精品视免费看| 在线观看亚洲人成网站| 2021精品国产品免费观看| 亚洲香蕉免费有线视频| 最近在线2018视频免费观看| 亚洲一区二区三区四区在线观看| 亚洲免费观看视频| 另类免费视频一区二区在线观看 | 成人午夜大片免费7777| 在线综合亚洲欧洲综合网站| 大香人蕉免费视频75| 亚洲男人天堂2022| 男女啪啪永久免费观看网站| 人成电影网在线观看免费| 亚洲一区中文字幕在线电影网| 美女被免费网站视频在线| 国产美女a做受大片免费| 一级毛片完整版免费播放一区| 无码专区永久免费AV网站| 亚洲精品无码国产片| 久久久久无码专区亚洲av| 久操免费在线观看| 亚洲中文字幕无码中文字| 亚洲国产成人久久一区WWW| 日韩电影免费在线观看中文字幕| 天天摸夜夜摸成人免费视频| 又大又硬又粗又黄的视频免费看| 美女视频黄的全免费视频网站| 亚洲国产精品VA在线看黑人| 91免费精品国自产拍在线不卡| 亚洲AV无码成人精品区蜜桃 | 亚洲不卡中文字幕| 免费无码一区二区三区蜜桃大| 亚洲第一成年网站大全亚洲| 97性无码区免费| sss日本免费完整版在线观看|