react 入门

搭建环境,略

使用mac os 11.6

vscode 1.71.0

新建文件夹 03.webpacj-base,vscode打开文件夹,并在vscode的终端执行命令如下,进行环境搭建:

一、搭建项目

快速初始化项目:

npm init -y

xxx@xxxdeMacBook-Pro 03.webpack-base % npm init -y
Wrote to /Users/xxx/Documents/workspace_html/react_study/three/03.webpack-base/package.json:

{
  "name": "03.webpack-base",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}


xxx@xxxdeMacBook-Pro 03.webpack-base %

创建目录 src 和dist和生成的package.json同级目录

创建index.html 在src下,并写入html:5回车,实现简单页面,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    webpack-base 
</body>
</html>

创建index.js在src下,并写入代码

console.log('xxx')

终端命令安装webpack

cnpm i webpack webpack-cli webpack-dev-server -D

新建文件webpack.config.js,在src同级目录上:

代码:


module.exports={
    mode:"development",
    devServer:{
        static:"../03.webpack-base"
    }
}

终端运行 webpack,可在dist 目录下看见main.js生成(此时main.js使用,需要手动配置到index.html文件);

配置package.json文件 :

  "scripts": {
    "dev": "webpack-dev-server --open --port 3000 --hot --host 127.0.0.1"
  },

安装插件:终端执行命令:

cnpm i html-webpack-plugin -D

配置webpack.config.js

const path = require('path')
const HtmlWebPackPlugin = require('html-webpack-plugin')
const htmlPlugin = new HtmlWebPackPlugin(
    {tepmplate:path.join(__dirname,'./src/index.html'),
    filename:'index.html'}
)
module.exports={
    plugins:[
        htmlPlugin,
    ]
}

安装react:

 cnpm i react react-dom -D

上述安装可使用一行命令执行:

cnpm i webpack webpack-cli webpack-dev-server html-webpack-plugin react react-dom -D

二、运行项目:

终端执行,运行项目,打开浏览器,并能看到“webpack-base”

npm run dev

 三、配置babel

终端执行安装命令:

 cnpm i --save-dev babel-loader @babel/core
 cnpm i @babel/preset-env --save-dev
 cnpm i @babel/preset-react -D

新建babel.config.json,配置

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

配置webpack.config.js文件


module.exports={
    module:{
        rules:[
            {
                test:/\.m?(js|jsx)$/,
                exclude:/node_modules/,
                use:{
                    loader:"babel-loader",
                    options:{
                        presets:['@babel/preset-env']
                    }
                }
            }
        ]
    }
    
}

在index.html文件body插入

   <div id="app"></div>

在index.js文件,实现代码:

import React from 'react'
import {createRoot} from "react-dom/client"

const e = <h1>react study</h1>

createRoot(document.getElementById("app")).render(e)

终端执行运行命令,标签e渲染到页面上。

四、配置打包处理css样式表

新建css目录,和src同级,在css目录下新建home.css文件

body{
    background-color:lightblue;
}
h1{
    color:navy;
    margin-left:20px;
}

终端执行打包处理css样式表的第三方loader

cnpm i style-loader css-loader -D

配置webpack.confing.js

module.exports={
    module:{
        rules:[
            {
                test:/\.css$/i,
                use:["style-loader","css-loader"]
            }
        ]
    }
}

在index.js导入 home.css文件

import '../css/home.css'

五、配置@路径和js|jsx|json等文件导入不用后缀

在webpack.config.js文件添加配置

module.exports={
    resolve:{
        extensions:['.js','.jsx','.json'],
        alias:{
            '@':path.join(__dirname,'./src')
        }
    }
}

导入css文件代码改为:

import '@/../css/home.css'

六、css启用模块化

直接导入样式表,全局生效,启用模块化来解决全局生效问题。

使用第三方样式表,需要取消启用的模块化,此时,一般会自己规定:

第三方样式表,都是.css结尾,不启用模块化;自己的样式表,都要以.scss或.less结尾,启用模块化。

例如,第三方样式表 bootstrap 和自己样式表使用:

1,安装第三方样式表bootstrap;

cnpm i bootstrap @popperjs/core -D

2,自己定义的样式表改为.scss结尾;

cnpm i sass-loader node-sass -D
cnpm update node-sass -D

3,针对 自己样式表和第三方样式表 进行配置

module.exports={
    module:{
        rules:[
            {
                test:/\.css$/i,
                use:["style-loader","css-loader"]
            },
            {
                test:/\.scss$/i,
                use:[
                    "style-loader",
                    {
                        loader:"css-loader",
                        options:{
                            modules:{
                                localIdentName:"[path][name]-[local]-[hash:base64:5]",
                            }
                        }
                    },
                    "sass-loader"
                ]
            }
        ]
    }
}

4、代码调用

.css代码改为.scss

.content{
    background-color: aquamarine;
}
#input{
    font-size: 20px;
    background-color: orange;
}
h1_{
    color: burlywood;
    margin-left: 20px;
    text-align: center;
}

在index.js中,调用

import pageObj from "@/../css/page.scss"
import "bootstrap/dist/css/bootstrap.css"

const content = <h1 className={pageObj.content}>内容</h1>
const btn = <button className='btn btn-primary' style={{ "margin-left": "20px"}}>提交</button>

createRoot(document.getElementById("app")).render(<div>
    {btn}
    {content}
</div>)

备注:

:local(.test) 包裹启用模块化,启用模块化后,默认所有的ID和类名,都被模块化了
:global(.test)取消启用模块化,取消启用模块化,全局的样式表。

示例代码:https://download.csdn.net/download/flyToSky_L/86514918

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React 是一个用于构建用户界面的 JavaScript 库。它被 Facebook 开发,用于构建 Facebook 和 Instagram 等应用程序的用户界面。React 通过组件化的方式构建用户界面,使得代码更易于维护和复用。下面是一个简单的 React 入门南: 1. 安装 React React 可以通过 NPM 安装,可以在命令行中执行以下命令来安装 React: ``` npm install react react-dom ``` 2. 创建 React 组件 在 React 中,一个组件就是一个 JavaScript 类。下面是一个简单的组件示例: ```javascript import React from 'react'; class HelloWorld extends React.Component { render() { return <div>Hello World!</div>; } } export default HelloWorld; ``` 这个组件只是简单地渲染一个 `Hello World!` 的文本。 3. 渲染组件 要在页面中渲染组件,需要使用 `ReactDOM.render()` 方法。下面是一个简单的示例: ```javascript import React from 'react'; import ReactDOM from 'react-dom'; import HelloWorld from './HelloWorld'; ReactDOM.render( <HelloWorld />, document.getElementById('root') ); ``` 这个示例中,我们首先导入了 `ReactDOM` 和 `HelloWorld` 组件,然后使用 `ReactDOM.render()` 方法将 `HelloWorld` 组件渲染到页面上。在这个示例中,我们将组件渲染到了一个 ID 为 `root` 的元素中。 这只是 React入门React 还有很多其他的概念和功能,比如 JSX、状态、生命周期等等。如果您想深入了解 React,可以查看 React 官方文档,里面有很多有用的信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值