烽天降临联盟-网游跨服战场活动门户

BabelJS - 使用 Babel 和 JSX

9165

BabelJS - 使用 Babel 和 JSX

在本章中,我们将了解如何使用 JSX 和 babel。在详细介绍之前,让我们先了解一下 JSX 是什么。

什么是 JSX?

JSX 是一段 JavaScript 代码,其中结合了 xml 语法。JSX 标签具有标签名称、属性和子元素,使其看起来像 xml。

React 使用 JSX 代替常规 JavaScript 进行模板化。没有必要使用它,但是,以下是它附带的一些优点。

它速度更快,因为它将代码编译为 JavaScript 时执行优化。

它也是类型安全的,并且大多数错误都可以在编译期间捕获。

如果您熟悉 HTML,它可以让您更轻松、更快速地编写模板。

我们在项目设置中使用了 babel 6。如果您想切换到 babel 7,请使用@babel/babel-package-name安装所需的 babel 包。

我们将创建项目设置并使用 webpack 来编译 jsx,并使用 Babel 对普通 JavaScript 做出反应。

要开始项目设置,请运行下面给出的命令来安装 babel、react 和 webpack。

命令

npm init

现在,我们将安装我们需要使用的必要包 - babel、webpack 和 jsx -

npm install --save-dev webpack

npm install --save-dev webpack-cli

npm install --save-dev webpack-dev-server

npm install --save-dev babel-core

npm install --save-dev babel-loader

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

npm install --save-dev babel-preset-react

npm install --save-dev react

npm install --save-dev react-dom

这是安装后的 package.json -

现在将创建一个 webpack.config.js 文件,其中包含捆绑 js 文件并使用 babel 将其编译为 es5 的所有详细信息。

要使用服务器运行 webpack,有一个叫做 webpack-server 的东西。我们添加了名为“发布”的命令;此命令将启动 webpack-dev-server 并更新最终文件的存储路径。现在我们将用来更新最终文件的路径是 /dev 文件夹。

要使用 webpack,我们需要运行以下命令 -

npm run publish

我们将创建webpack.config.js文件,其中包含 webpack 工作的配置详细信息。

文件中的详细信息如下 -

var path = require('path');

module.exports = {

entry: {

app: './src/main.js'

},

output: {

path: path.resolve(__dirname, 'dev'),

filename: 'main_bundle.js'

},

mode:'development',

module: {

rules: [

{

test:/\.(js|jsx)$/,

include: path.resolve(__dirname, 'src'),

loader: 'babel-loader',

query: {

presets: ['es2015','react']

}

}

]

}

};

文件的结构如上所示。它从路径开始,给出当前路径的详细信息。

var path = require('path'); //gives the current path

接下来是 module.exports 对象,它具有entry、output 和 module 属性。

入口是起点。这里我们需要给出我们要编译的主要js文件。

entry: {

app: './src/main.js'

},

path.resolve(_dirname, 'src/main.js') -- 将在目录中查找 src 文件夹,并在该文件夹中查找main.js。

输出

output: {

path: path.resolve(__dirname, 'dev'),

filename: 'main_bundle.js'

},

输出是一个包含路径和文件名详细信息的对象。路径将保存保存编译文件的文件夹,文件名将告诉您的.html文件中使用的最终文件的名称。

模块

module: {

rules: [

{

test:/\.(js|jsx)$/,

include: path.resolve(__dirname, 'src'),

loader: 'babel-loader',

query: {

presets: ['es2015','react']

}

}

]

}

模块是具有规则详细信息的对象,具有测试、包含、加载器、查询等属性。

测试将保存所有以 .js 和 .jsx 结尾的 js 文件的详细信息。它具有在给定入口点末尾查找 .js 和 .jsx 的模式。

Include告诉用于查找文件的文件夹。

Loader使用 babel-loader 来编译代码。

查询具有属性预设,它是值为 env – es5 或 es6 或 es7 的数组。我们使用了es2015和react作为预设。

创建文件夹src/. 在其中添加main.js和App.jsx 。

应用程序.jsx

import React from 'react';

class App extends React.Component {

render() {

var style = {

color: 'red',

fontSize: 50

};

return (

Hello World!!!

);

}

}

export default App;

main.js

import React from 'react';

import ReactDOM from 'react-dom';

import App from './App.jsx';

ReactDOM.render(, document.getElementById('app'));

运行以下命令来捆绑 .js 文件并使用预设es2015和React进行转换。

命令

npm run pack

将main_bundle.js从 dev 文件夹添加到index.html -

React App

命令

npm run publish

输出