详解create-react-app 2.0版本如何启用装饰器语法

create-react-app(简称cra)已经更新之2.0.3版本, babel也更新至7.x版本, JavaScript装饰器语法虽然还不是标准, 但是借助于babel, 也能在项目里愉快的玩耍.

cra2.0时代如何启用装饰器语法呢? 我们依旧采用的是react-app-rewired, 通过劫持webpack cofig对象, 达到修改的目的.

?


1

yarn add react-app-rewired

修改package.json

?


1

2

3

4

5

"scripts": {

  "start": "react-app-rewired start",

  "build": "react-app-rewired build",

  "test": "react-app-rewired test"

 }

安装装饰器语法所需的babel插件, 也可以顺带升级babel-core

?


1

yarn add @babel/plugin-proposal-decorators metro-react-native-babel-preset -D

在项目根目录下创建.babelrc, config-overrides.js文件

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

// .babelrc

{

 "presets": ["module:metro-react-native-babel-preset"],

 "plugins": [

  [

   "@babel/plugin-proposal-decorators",

   {

    "legacy": true

   }

  ]

 ]

}

// config-overrides

const { getBabelLoader } = require(‘react-app-rewired‘);

const path = require(‘path‘);

module.exports = function override(config, env) {

 const babelLoader = getBabelLoader(config.module.rules);

 const pwd = path.resolve();

 babelLoader.include = [path.normalize(`${pwd}/src`)];

 // use babelrc

 babelLoader.options.babelrc = true;

 

 return config;

};

原理就是劫持了config对象, 对其babel规则进行简单的修改.

附上完整的package.json

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

{

 "name": "my-react-project",

 "version": "0.1.0",

 "private": true,

 "dependencies": {

  "react": "^16.5.2",

  "react-app-rewired": "^1.6.2",

  "react-dom": "^16.5.2",

  "react-scripts": "2.0.5"

 },

 "scripts": {

  "start": "react-app-rewired start",

  "build": "react-app-rewired build",

  "test": "react-app-rewired test"

 },

 "eslintConfig": {

  "extends": "react-app"

 },

 "browserslist": [

  ">0.2%",

  "not dead",

  "not ie <= 11",

  "not op_mini all"

 ],

 "devDependencies": {

  "@babel/plugin-proposal-decorators": "^7.1.2",

  "metro-react-native-babel-preset": "^0.48.1",

  "webpack-bundle-analyzer": "^3.0.3"

 }

}

     
HTML+CSS+JavaScript课堂视频 动力节点精华网页开发课程 HTML JavaScript视频教程 
妙味课堂JavaScript视频教程 基础+提高+项目 三阶段 JavaScript实战式教学视频教程 
百度、网易博客、58等大型网站JS实战+网页特效视频教程 JavaScript实战视频教程 
33GWeb前段重磅教程推荐 麦子学院完整版Web前端视频教程 Web前端开发从入门到精通 
网易微专业web前端开发课程三个月从入门成为前端开发工程师系列视频教程 web前端视频 
54集课程实战 WEB前端网页设计实战视频教程 Web前端开发经典实战视频教程 
JavaScript零基础入门视频教程 精华提炼快速入门JavaScript JavaScript入门视频教程 
超经典的Web前端与移动开发基础视频 Web前端基础开发视频教程 移动开发基础视频教程 
六套Bootstrap Web前端CSS框架开发视频教程合集 Bootstrap视频教程 
HTML5 与 Bootstrap 应用实例视频教程 从设计图到网页视频教程 
玩转前端技术栈(React+Redux) 系列课程
TypeScript + React + Redux 实战简单天气APP全套完整项目  ...2
淘宝经典Div+CSS布局实战 
2017最新Ionic 2 跨平台实战 iOS & Android Apps
2017最新vue2.0高级实战商城前端node.js实战后端
2017最新HTML5与CSS3入门+实战全套视频教程
移动端图片轮播及相册开发
2017最新HTML5移动端商城布局实战开发全套视频
2017最新移动端交互开发入门到精通全套视频教程
玩转HTML5移动端APP混合应用开发实战

原文地址:https://www.cnblogs.com/xanthedsf/p/10163959.html

时间: 2024-10-08 17:27:30

详解create-react-app 2.0版本如何启用装饰器语法的相关文章

[React] {svg, css module, sass} support in Create React App 2.0

create-react-app version 2.0 added a lot of new features. One of the new features is added the svgr webpack loader to wrap SVGs in React components as a named export. This let’s you either grab the filename from the default export or grab a wrapped S

React漫漫学习路之 利用Create React App命令创建一个React应用

所谓万事开头难,本文旨在为初探React的同学,建立第一个最基本的react应用. Create React App是Facebook官方的一个快速构建新的 React 单页面应用的脚手架工具,它可以帮你配置开发环境,以便你可以使用最新的 JavaScript 特性,还能提供很棒的开发体验,并为生产环境优化你的应用.(如果你使用过vue-cli构建vue应用,那么此处可类比) 话不多说,直接开始. 安装 全局安装create-react-app npm install -g create-rea

《Linux设备驱动开发详解(基于最新4.0内核)》前言

Linux从未停歇脚步.Linus Torvalds,世界上最伟大的程序员之一,Linux内核的创始人,Git的缔造者,仍然在没日没夜的合并补丁,升级内核.做技术,从来没有终南捷径,拼的就是坐冷板凳的傻劲. 这是一个连阅读都被碎片化的时代,在这样一个时代,人们趋向于激进.浮躁.内心的不安宁使我们极难静下心来研究什么.我见过许许多多的Linux工程师,他们的简历书写着"精通"Linux内核,有多年的工作经验,而他们的"精通"却只是把某个寄存器从0改成1,从1改成0的不

s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf-8_*_ 或者将字符串单独声明: a = "中文".encode("utf-8") 函数式编程 函数式编程中的函数指代的是数学中的函数. 函数式编程输入如果确定,则输出一定是确定的.函数中并没有很多逻辑运算 python是一个面向对象的语言,只是一部分支持函数式编程.

[转] Immutable 详解及 React 中实践

https://zhuanlan.zhihu.com/p/20295971 作者:camsong链接:https://zhuanlan.zhihu.com/p/20295971来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Shared mutable state is the root of all evil(共享的可变状态是万恶之源) -- Pete Hunt 有人说 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable

Immutable 详解及 React 中实践

本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万恶之源) -- Pete Hunt 有人说 Immutable 可以给 React 应用带来数十倍的提升,也有人说 Immutable 的引入是近期 JavaScript 中伟大的发明,因为同期 React 太火,它的光芒被掩盖了.这些至少说明 Immutable 是很有价值的,下面我们来一探究竟.

详解php中空字符串和0之间的关系

$_x=$row["x"];$_y=$row["y"];if(isset($_x) && isset($_y)){if($row["y"] == 0 || $row["x"] == 0){$d=$this->getDistance($row["y"],$row["x"],$y,$x);}elseif(!empty($row["y"]) &

72变创始人吴奇详解智能硬件工业4.0

伴随着互联网+概念的不断普及,智能硬件工业4.0这个词现在也非常火热,在刚刚结束的正和岛创新大集72变智能硬件专场上72变创始人吴奇就智能硬件工业4.0一词做出深度剖析. 图为72变创始人吴奇 很多人都在问,72变的网站是做什么的?这次借助正和岛的机会,正式介绍下我们的网站,我们有个非常好记的名字,72变,公司名为奇天大胜,这也是一个非常响亮的名字. 我们说智能硬件这些词越来越热,也看到众多产品的诞生和灭亡.72变的服务平台同时也出现在线上和线下,包括新媒体.社区.众筹平台.孵化器和电商,这是我

详解Mysql5.5以及5.7版本忘记管理员密码处理机制

简介 使用Mysql时,如果忘记了其他用户的密码,可以使用root用户重新设置,但是如果忘记了root的密码,就需要采用下面的操作进行处理 实验环境 系统环境:centos7.4 服务器IP地址:192.168.100.71 yum挂载目录:/mnt/sr0 相关源码信息:mysql-5.5.24.mysql-5.7.17 注意没有安装安装mysql的朋友可以查看我之前的博文(内附源码包)Mysql-5.7安装教程 Mysql-5.5安装教程 解密步骤 一.Mysql-5.5版本忘记密码重置 1