资讯专栏INFORMATION COLUMN

React入门:从零搭建一个React项目

stackvoid / 911人阅读

摘要:一初始化项目新建文件夹,文件名文件夹名称不要用,这类关键字,后面使用插件时会发生错误。未设置会报一个警告。四在项目中使用安装。

一、初始化项目

新建文件夹,文件名firstreact 文件夹名称不要用react,node这类关键字,后面使用插件时会发生错误。

init项目环境,项目信息可默认或自行修改

mkdir firstreact
cd firstreact
npm init

二、安装webpack

新建gitignore文件,用于忽略安装的包文件,文件内容: node_modules

安装webpack, 注意:我此处安装的webpack版本是4.28.4,webpack4和webpack2, webpack3的一些配置不同,具体参考webpack文档webpack中文文档

npm i --save-dev webpack

三、配置webpack环境

新建文件夹,文件名:src

src目录下新建文件hello.js,文件内容:

module.exports = function () {
  var element = document.createElement("h1");

  element.innerHTML = "Hello React";

  return element;
};

src目录下新建文件index.js,文件内容:

var hello = require("./hello.js");

document.body.appendChild(hello());

新建文件webpack.config.js,一个最基础的webpack配置如下:

const webpack = require("webpack");
const path = require("path");
var config = { 
    entry: [ "./src/index.js" ], // 打包入口文件
    output: {
        path: path.resolve(__dirname, "dist"), 
        filename: "bundle.js" 
    } // 打包输出文件
};
module.exports = config;

执行webpack。执行完成后,根目录下会新增一个dist文件夹,文件夹下是打包出来的js文件bundle.js

webpack

安装html-webpack-plugin,该插件将为你生成一个 HTML5 文件, 其中包括使用 script 标签的 body 中的所有 webpack 包。

npm i --save-dev html-webpack-plugin 

html-webpack-plugin配置,webpack.config.js内容如下

const webpack = require("webpack");
const path = require("path");
const HtmlwebpackPlugin = require("html-webpack-plugin");

var config = { 
    entry: [ "./src/index.js" ], // 打包入口文件
    output: {
        path: path.resolve(__dirname, "dist"), 
        filename: "bundle.js" 
    },// 打包输出文件
    plugins: [
        new HtmlwebpackPlugin({ 
            title: "Hello React", 
        })
    ]
};

module.exports = config;

再次执行webpack,此时dist目录下生成了一个新文件index.html

webpack

安装webpack-dev-server和webpack-cli,提供一个简单的 web 服务器,并且能够实时重新加载。

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

修改webpack.config

const webpack = require("webpack");
const path = require("path");
const HtmlwebpackPlugin = require("html-webpack-plugin");

var config = {
    entry: [
        "webpack/hot/dev-server",
        "webpack-dev-server/client?http://localhost:3000",
        "./src/index.js"
    ], // 入口文件
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, // 打包输出文件
    plugins: [
        new HtmlwebpackPlugin({
            title: "Hello React"
        }),
    ]
};
module.exports = config;

配置webpack启动的快方式,此处webpack4在启动服务是要求设置mode,告知 webpack 使用相应模式的内置优化。未设置会报一个警告。mode选项支持“development”“production”“none”,具体信息请阅文档 修改package.json文件:

············
  "scripts": {
    "start": "webpack-dev-server --mode=development --port 3000 --hot",
    "build": "webpack --mode=production"
  }
···········

启动服务,服务启动后打开浏览器访问http://localhost:3000/

npm run dev

三、优化开发环境

css编译和js编译。现在开发时一般css都会使用扩展css语法,如less或sass,这时就需要在项目中安装css编译插件。此处以less为例。es6和es7语法也需要babel编译。

const webpack = require("webpack");
const path = require("path");
const HtmlwebpackPlugin = require("html-webpack-plugin");

var config = {
    entry: [
        "webpack/hot/dev-server",
        "webpack-dev-server/client?http://localhost:3000",
        "./src/index.js"
    ], // 入口文件
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, // 打包输出文件
    module: {
        rules: [
            {
                test: /.less$/,
                use: [
                    { loader: "style-loader" },
                    { loader: "css-loader" },
                    { loader: "less-loader" }
                ]
            },
            {
                test: /.js$/,
                exclude: /node_modules/,
                use: [
                    { loader: "babel-loader" }
                ]
            }
        ]
    },
    plugins: [
        new HtmlwebpackPlugin({
            title: "Hello React"
        }),
    ]

安装:

npm i --save-dev less css-loader style-loader less-loader
npm i --save-dev babel-loader  @babel/core @babel/preset-env @babel/preset-react 

修改webpack.config.js

const webpack = require("webpack");
const path = require("path");
const HtmlwebpackPlugin = require("html-webpack-plugin");

var config = {
    entry: [
        "webpack/hot/dev-server",
        "webpack-dev-server/client?http://localhost:3000",
        "./src/index.js"
    ], // 入口文件
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, // 打包输出文件
    module: {
        rules: [
            {
                test: /.less$/,
                use: [
                    { loader: "style-loader" },
                    { loader: "css-loader" },
                    { loader: "less-loader" }
                ]
            },
            {
                test: /.js$/,
                exclude: /node_modules/,
                use: [
                    { loader: "babel-loader" }
                ]
            }
        ]
    },
    plugins: [
        new HtmlwebpackPlugin({
            title: "Hello React"
        }),
    ]
};
module.exports = config;

根目录下新建.babelrc文件,配置文件内容如下

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ]
}

在src目录下新建文件index.less,文件内容如下

body{
  h1{
    color: green;
  }
}

修改src目录下的index.js文件:

import hello from "./hello.js";
import "./index.less";

document.body.appendChild(hello());

再次启动服务

npm run start

目前为止完成了一个最基础的项目结构,后面需要使用其他框架的话再此基础上修改。在这过程中因各个插件工具的版本不同可能会发生不同错误,遇到错误时,请查询相关文档。

四、在项目中使用React

安装react。

npm i --save-dev react react-dom

修改src目录下index.js,文件内容如下:

import React from "react";
import ReactDOM from "react-dom";

import "./index.less";

class APP extends React.Component  {
    render() {
        return (

Hello React

) } } ReactDOM.render(, document.getElementById("content"));

在src目录下新建index.html,在html增加挂载节点content。 文件内容如下:




  
  <%= htmlWebpackPlugin.options.title %>


  

对应修改webpack.config.js文件,为htmlWebpackPlugin修改template

············

    plugins: [
        new HtmlwebpackPlugin({
            title: "Hello React",
            template: "./src/index.html"
        }),
    ]
    
············

目录结构为:

│  .babelrc
│  .gitignore
│  package.json
│  webpack.config.js
│      
└─src
        hello.js
        index.html
        index.js
        index.less

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/101886.html

相关文章

  • 从零开始的 Android 新项目 - 收藏集 - 掘金

    摘要:从零开始的新项目高级篇掘金承接上篇,本篇继续讲解一些更加进阶的内容,包括列表绑定自定义属性双向绑定表达式链表达式动画注入测试等。 从零开始的 Android 新项目 8 - Data Binding 高级篇 - 掘金 承接上篇,本篇继续讲解一些更加进阶的内容,包括:列表绑定、自定义属性、双向绑定、表达式链、Lambda表达式、动画、Component注入(测试)等。 Demo源码库:D...

    LeviDing 评论0 收藏0
  • 手把手教你从零搭建react局部热加载环境

    摘要:有没有办法实现就局部刷新呢当然是有第十步执行为了实现局部热加载,我们需要添加插件。 前言 用了3个多月的vue自认为已经是一名合格的vue框架api搬运工,对于vue的api使用到达了一定瓶颈,无奈水平有限,每每深入底层观赏源码时候都迷失了自己。 遂决定再找个框架学习学习看看能否突破思维局限,加上本人早已对React、RN技术垂涎已久,于是决定找找教程来学习。无奈第一步就卡在了环境搭...

    quietin 评论0 收藏0
  • 如何从零入门React?实战做个FM应用吧

    摘要:面试造航母,工作拧螺丝,新公司面试技术官要求会技术栈。然而公司项目暂时并没有用到,不过为了提升实战经验,还是在业余时间捣腾出一个,以下是项目介绍。前段为了学习小程序的开发,做了个小程序名叫口袋吉他,这也是个人兴趣驱使的开发想法。 面试造航母,工作拧螺丝,新公司面试技术官要求会react技术栈。 问:有使用过React么?答:没,只使用过Vue。又问:给你一星期能上手开发么?答:可以(一...

    codecook 评论0 收藏0
  • 学习从零开始搭建React脚手架

    摘要:写在前面准备学习一下和相关的东西,官方的脚手架看起来太繁琐,所以打算自己来搭建一个,参考了这个文档从零搭建全家桶框架教程步骤上都差不多第一步,依赖总览完成到我现在半成品的过程中,目前完成开发模式的相关操作,添加了按需加载的地步。 写在前面 准备学习一下react和webpack相关的东西,官方的脚手架看起来太繁琐,所以打算自己来搭建一个,参考了这个文档从零搭建React全家桶框架教程;...

    cod7ce 评论0 收藏0
  • 从零开始搭建React同构应用(二):浏览器端工程化

    摘要:从零开始搭建同构应用二项目工程化浏览器端在从零开始同构开发一中我们已经能实现基本的配置和编译了。接下来我们需要将编译工作工程化。配置作用自动生成自动在引入,。文件内容如下同构开发配置自动刷新这里我们用到的修饰器特性。 从零开始搭建React同构应用(二) 项目工程化(浏览器端) 在从零开始React同构开发(一)中我们已经能实现基本的React配置和编译了。接下来我们需要将编译工作工程...

    wwq0327 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<