babel

从零开始配置webpack(基于webpack 4 和 babel 7版本)

流过昼夜 提交于 2020-01-29 10:56:09
webpack 核心概念: Entry: 入口 Module:模块,webpack中一切皆是模块 Chunk:代码库,一个chunk由十多个模块组合而成,用于代码合并与分割 Loader:模块转换器,用于把模块原内容按照需求转换成新内容 Plugin:扩展插件,在webpack构建流程中的特定时机注入扩展逻辑来改变构建结果或做你想要做的事情 Output: 输出结果 webpack流程: 原文链接: 点我 webpack启动后会从 Entry 里配置的 Module 开始递归解析 Entry 依赖的所有Module.每找到一个Module,就会根据配置的Loader去找出对应的转换规则,对Module进行转换后,再解析出当前的Module依赖的Module.这些模块会以Entry为单位进行分组,一个Entry和其所有依赖的Module被分到一个组也就是一个Chunk。最好Webpack会把所有Chunk转换成文件输出。在整个流程中Webpack会在恰当的时机执行Plugin里定义的逻辑。 下面我们开始从零开始配置一个支持打包图片,CSS,LESS,SASS,支持ES6/ES7和JSX语法,并对代码进行压缩的webpack配置. 1. 最简webpack配置 首先初始化npm和安装webpack的依赖: npm init -y npm install --save-dev

解决让浏览器兼容ES6特性

主宰稳场 提交于 2020-01-28 14:03:34
为什么ES6会有兼容性问题? 由于广大用户使用的浏览器版本在发布的时候也许早于ES6的定稿和发布,而到了今天,我们在编程中如果使用了ES6的新特性,浏览器若没有更新版本,或者新版本中没有对ES6的特性进行兼容,那么浏览器肯定无法识别我们的ES6代码,好比浏览器根本看不懂我写的let和const是什么东西?只能报错了。这就是浏览器对ES6的兼容性问题。 好消息 哪里有灾难,哪里就有勇士和救兵,针对ES6的兼容性问题,很多团队为此开发出了多种语法解析转换工具,把我们写的ES6语法转换成ES5,相当于在ES6和浏览器之间做了一个翻译官。比较通用的工具方案有babel,jsx,traceur,es6-shim等。 此外,浏览器自身也加快速度兼容ES6的新特性,其中对ES6新特性最友好的是Chrome和Firefox浏览器。 各大转换工具、javascript解析引擎对ES6的支持程度情况,可以参查看这个地址: http://kangax.github.io/compat-table/es6/ 坏消息 即使浏览器对ES6新特性开始渐渐支持,但是这还需要很长一段时间,我们不能百分百依赖浏览器本身对ES6的支持度来开发。 虽然出现了各种转换工具,但是到目前为止,还没有一款工具能百分百将ES6的新特性完美地转换成ES5,因为在ES6新增的内容中,存在一些无法在ES5中找到与之匹配的语法

webpack4.x 使用

让人想犯罪 __ 提交于 2020-01-28 03:38:43
webpack4.x webpack 模块打包工具,分析项目结构,找到js模块及一些浏览器不能运行的语言如ES6/sass等,并将其转换和打包为何时的格式供浏览器使用; 打包:将多个js文件打包成一个文件,减少服务器压力和下载带宽; 转换:把浏览器不能识别的语言转换为js,让浏览器能够正确识别 优化:优化项目,提高性能 安装 // 新建项目文件夹,并进入 mkdir webpack_demo cd webpack_demo //全局安装 npm install -g webpack // 全局安装后还需进行一个项目目录的安装,npm安装之前先进行初始化,目的-生成package.json文件(包括当前项目依赖模块,自定义脚本任务等) npm n init // 项目目录的安装 --save-dev保存到package.json中且在dev开发中使用,生产环境中不使用; npm install --save-dev webpack // 查看webpack版本 webpack -v // ps:查看webpack版本时会提示安装webpack-cli,因为此时安装的webpack版本是4.x;webpack 已经将 webpack 命令行相关的内容都迁移到 webpack-cli,所以除了 webpack 外,还需要安装 webpack-cli npm install --save

webpack实现es6转es5

时间秒杀一切 提交于 2020-01-26 19:15:24
Webpack实现es6转换为es5 安装插件 npm install --save-dev babel-loader @babel/core @babel/preset-env 配置 在 webpack.config.js 中的module的rules中,添加一条新的loader { test: /\.js/, //babel转化es6到es5 exclude: /node_modules/, use: { loader: "babel-loader", options: { presets: [ [ "@babel/preset-env", { useBuiltIns: "usage", corejs: 2 } ] ] } } } 目前就已经可以了 缺点,会他会对于window的变量造成一些污染,那么我们就可以使用第二种方式 第二种方式 安装 npm install --save-dev babel-loader @babel/core @babel/plugin-transform-runtime @babel/runtime 使用 在 webpack.config.js 中的module的rules中添加一条如下规则 { test: /\.js/, //babel转化es6到es5 exclude: /node_modules/, use: { loader: "babel

执行npx babel-node命令报SyntaxError: Cannot use import statement outside a module解决

吃可爱长大的小学妹 提交于 2020-01-26 02:59:26
D:\CODE\babel模块化>npx babel-node index.js D:\CODE\babel模块化\index.js:2 import m1 from './m1.js'; ^^^^^^ SyntaxError: Cannot use import statement outside a module ?[90m at Module._compile (internal/modules/cjs/loader.js:892:18)?[39m at loader (D:\Program Files\nodejs\node_modules\?[4mbabel-cli?[24m\node_modules\?[4mbabel-register?[24m\lib\node.js:144:5) at Object.require.extensions.<computed> [as .js] (D:\Program Files\nodejs\node_modules\?[4mbabel-cli?[24m\node_modules\?[4mbabel-register?[24m\lib\node.js:154:7) ?[90m at Module.load (internal/modules/cjs/loader.js:812:32)?[39m ?[90m at Function

webpack4从零配置搭建简单的React16开发环境

人盡茶涼 提交于 2020-01-26 02:42:21
写在最前 暑假想要学习React, 发现React官网上的没有说明如何搭建React开发环境, 网上找的很多都是基于webpack3的, 或者直接使用脚手架, 所以趁着放假, 就稍微学了下webpack, 开始搭建自己的React项目. 第一次写博客, 如有错误, 请指出, 谢谢! 之后也会继续更新从零搭建React全家桶系列, react+react-router+redux+es6. 希望大家多多支持. 说明 开发环境是windows 10 技术栈版本 node 10.3.0 npm 6.1.0 webpack 4.16.1 react 16.4.1 babel-core 6.26.3 babel-loader 7.1.5 babel-preset-env 1.7.0 babel-preset-react 6.24.1 初始化项目 创建文件夹并进入 mkdir react-start&& cd react-start 初始化package.json文件         npm init -y     -y的意思是按照默认的填写 webpack 安装webpack npm i webpack webpack-cli -D   -D的意思是保存到开发依赖中   在webpack4中, 需要同时安装webpack和webpack-cli, 因为两者在webpack4中分开管理了

快速学习ES6新特性-修饰器(Decorator)

落爺英雄遲暮 提交于 2020-01-26 01:55:24
1.11、修饰器(Decorator) 修饰器(Decorator)是一个函数, 用来修改类的行为。 ES2017 引入了这项功能, 目前 Babel 转码器己经支持。 使用: 运行报错: 原因是,在ES6中,并没有支持该用法,在ES2017中才有,所以我们不能直接运行了,需要进行编码后再运行。转码的意思是:将ES6或ES2017转为ES5执行。类似这样: 来源: CSDN 作者: cwl_java 链接: https://blog.csdn.net/weixin_42528266/article/details/104030917

Babel指南——基本环境搭建

旧时模样 提交于 2020-01-25 11:51:31
ECMAScript的现状 ECMAScript,本身是一个脚本语言的设计规范,基于此规范,有许多为人熟知的语言,如JavaScript、ActionScript等。而时至几年前,随着Node.js的出现,以及HTML5带来的诸多新WebAPI,让JavaScript一下子提升到一个无比重要的位置。时至那个阶段,我们可以统称当时为ECMAScript5(ES5)。 那之后,很快就开始了对ECMAScript 2015(ES6)的制定,ES6一洗JS过去诸多的奇淫巧技、含糊不清的地方,带入了很多现代编程语言的特性,而且其推行的速度远比HTML5和CSS3要快。而在今天讨论ES6的时候,实际上ECMAScript 2016(ES7)已经在制定中(目前其实主要是修正和弥补ES6的不足),很多已经可以使用在实际生产环境中。 然而如上所述,即使是ES6,仍然有许多不足之处,所以急匆匆的ES7上线了,纵然你在使用ES6了,但是以今天的技术发展速度来说,既然ES7有了修正案,尽早的切入到ES7才能跟得上时代的步伐。 而JavaScript是一门需要环境依托运行的语言,无论是Browser环境下,还是服务器环境下,都需要环境的支持。下面这个列表,可以看到你的浏览器,和当前市面可支持JavaScript环境对ES6的支持情况: https://kangax.github.io/compat

es6 babel编译

守給你的承諾、 提交于 2020-01-25 04:54:41
本文主要参照阮一峰的 es6入门 ,为提高自己写了一份随笔。 原文地址请戳这里 ECMAScript 6 入门 ECMAScript 6是JavaScript语言的下一代标准。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。 但是目前浏览器对es6不完全兼容,需要借住babel编译。 Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 node 安装babel ; $ npm install --save-dev babel-preset-es2015配置 .babelrc文件在目录下。 该文件用来设置转码规则和插件,基本格式如下。 { "presets": [], "plugins": [] } presets 字段设定转码规则,官方提供以下的规则集,你可以根据需要安装。 # ES2015转码规则 $ npm install --save-dev babel-preset-es2015 # react转码规则 $ npm install --save-dev babel-preset-react # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个 $ npm install --save-dev babel-preset-stage-0 $ npm install --save-dev

13 vue学习 package.json

邮差的信 提交于 2020-01-24 15:19:06
一:package.json文件详解   管理你本地安装的npm包 。定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。 npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。 { "name": "vue2-manage", "version": "1.0.1", "description": "vue2-manage", "author": "cangdu <1264889788@qq.com>", "license": "GPL", "private": true, "scripts": { "dev": "cross-env NODE_ENV=online node build/dev-server.js", "local": "cross-env NODE_ENV=local node build/dev-server.js", "build": "node build/build.js", "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", "e2e": "node test/e2e/runner.js", "test": "npm run unit && npm run