侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

react笔记

2024-05-11 星期六 / 0 评论 / 0 点赞 / 80 阅读 / 6564 字

最近一段时间,在项目中使用了FaceBook的react作为基础框架,UI组件使用蚂蚁金服的Ant Design。写个博客记录下开发过程中的一些常见问题。(基础环境:react/es6/jsx,外加w

最近一段时间,在项目中使用了FaceBook的react作为基础框架,UI组件使用蚂蚁金服的Ant Design。写个博客记录下开发过程中的一些常见问题。(基础环境:react/es6/jsx,外加webpack/antd。之所以没有使用redux,太增加学习成本了,咱们只是想用用react而已。)

涉及内容介绍

react

react是一个通过虚拟DOM渲染HTML界面的js框架,由FaceBook开源提供,最初用于Instagram网站。按照官方和相关社区的说法,虚拟DOM渲染界面比直接操作DOM性能更高。我只是一个java码农,高并发多线程等着我去学,就没去研究了。真心怕了复杂的前端。

es6

es6是新一代的javascript,主要提供了一些新的特性,让代码写起来更加方便。另也叫做es2015比如定义函数,funcName=data=>{return xxx},后面细说。

jsx

jsx是扩展版的js文件,可以让js拥有处理xml标签能力。

webpack

webpack作为前端工具,用于混合,压缩,打包,启动服务等...称为新一代前端神器。比如:webpack-dev-server --hot(启动服务), webpack -p(混合压缩)

antd

ant design是蚂蚁金服基于react开发的UI库,简洁大气,狂拽炫酷。(官方自称:这是一个设计语言)

注:npm作为串联这一切的工具,可以使用其下载安装react及其相关的库和工具,并且管理依赖库的版本,有点像java里的maven

创建一个React项目

未完待续:周末了,祝各位休息好。(超实用笔记,绝不太监)


2016-05-23

  • 新建demo目录

    md demo & cd demo /mkdir demo & cd demo

  • 初始化生成npm配置文件package.json,并修改其内容

    npm init

    {  "name": "demo",  "version": "1.0.0",  "scripts": {    "start": "webpack-dev-server --hot",    "build": "webpack -p"  },  "dependencies": {    "antd": "^1.0.1",    "jquery": "^2.2.3",    "react": "0.14.x",    "react-dom": "0.14.x",    "react-router": "^2.3.0"  },  "devDependencies": {    "babel-loader": "^6.2.4",    "babel-preset-es2015": "^6.6.0",    "babel-preset-react": "^6.5.0",    "css-loader": "^0.23.1",    "extract-text-webpack-plugin": "^1.0.1",    "file-loader": "^0.8.5",    "html-webpack-plugin": "^2.15.0",    "less": "^2.6.1",    "less-loader": "^2.2.3",    "postcss-loader": "^0.8.2",    "raw-loader": "^0.5.1",    "style-loader": "^0.13.1",    "url-loader": "^0.5.7",    "webpack": "^1.12.15",    "webpack-dev-server": "^1.14.1"  }}

    (注:如果想添加应用中使用的库,在dependencies里添加;如果是工具类的库,在devDependencies里添加。)

  • 安装依赖库,生成node_modules依赖库目录

    npm install

    (注:如果等待时间长,可以CTRL+C取消并删除生成的node_modules目录,并使用npm install --registry=http://registry.npm.taobao.org)

  • 增加几个目录,形成如下结构

    --demo  |--dist  |--node_modules  |--src      |--commons      |--images      |--styles      |--views      |--index.html      |--index.jsx  |--package.json  |--webpack.config.js

    (注:dist是通过webpack打包后的最终文件;node_modules是所有的依赖库位置;src是真正的项目目录,其中commons作为公共组件目录,images作为图片资源目录,styles作为样式表目录,views里写系统的每个功能页面;package.json是npm配置文件;webpack.config.js是webpack配置文件)

  • 新建webpack的配置文件webpack.config.js

    //定义webpack及插件var path = require('path');var webpack = require('webpack');var HtmlwebpackPlugin = require('html-webpack-plugin');var ExtractTextPlugin = require("extract-text-webpack-plugin");//定义了一些文件夹的路径var ROOT_PATH = path.resolve(__dirname);var MOUDLE_PATH = path.resolve(ROOT_PATH, 'node_modules')var SRC_PATH = path.resolve(ROOT_PATH, 'src');var BUILD_PATH = path.resolve(ROOT_PATH, 'dist');//定义版本号,方便生成版本号var myVersion = '1.0.0';//定义公共库var common = [    'react',    'react-dom',    'antd',    'jquery']//定义各种加载器module.exports = {    entry: {        index: path.resolve(SRC_PATH, 'index.jsx'),        common: common    },    output: {        path: path.resolve(BUILD_PATH, myVersion),        filename: '[name].js'    },    resolve: {        extensions: ['', '.js', '.jsx'],        modulesDirectories: [SRC_PATH, MOUDLE_PATH]    },    module: {        loaders: [            { test: //.html$/, loader: 'raw-loader' },            { test: //.jsx|js$/, loader: 'babel-loader', exclude: /node_modules/, query: { presets: ['es2015', 'react'] } },            { test: //.(less)$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader") },            { test: //.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },            { test: //.(png|jpg|jpeg|gif)$/, loader: 'url-loader?limit=10000&name=./images/[name].[ext]' },            { test: //.(ttf|eot|woff|woff2|otf|svg)/, loader: 'file-loader?name=./font/[name].[ext]' },        ]    },    plugins: [        new ExtractTextPlugin("[name].css"),        new HtmlwebpackPlugin({            favicon:'./src/images/favicon.png',            inject: true,            template: path.resolve(SRC_PATH, 'index.html')        }),        new webpack.NoErrorsPlugin()    ],    devServer: {        historyApiFallback: true,        hot: true,        inline: true,        progress: true,    }};

    未完待续:下班的时候抽空再往下写。

广告 广告

评论区