美文网首页
react入门

react入门

作者: 哥们你钱掉了 | 来源:发表于2018-05-06 20:42 被阅读0次

前端开发扫盲(写给同事)

chapter1 概念入门

前端几个重要的概念 😊

单页面应用:

单页面应用与传统java jsp等资源不同的点在于,单页面应用的资源对应只有一个html文件和一个js文件(大多是这样),需要访问不同链接的资源可以通过 “#” 这个浏览器锚点进行访问,针对“#”进行浏览器的路由功能

技术栈:😭

java程序员可能长时间没有接触过前端的技术,前端这几年来的技术变革很大,前两年我们还在写es5的脚本js代码,如今的es6与es5在语法上面有了很大的区别,但是java程序理解es6的语法应该不会太难。需要注意的是,es6的代码部分语法现在的浏览器还不能完全支持,需要通过工具把es6的代码再次编译成es5的代码才能正常运行在浏览器中,常用的编译工具链是webpack,babel详见http://webpack.github.io

环境搭建 🤔

环境安装: windows下建议直接下载最新稳定版本的msi安装包,一步到位,无需任何配置,mac下安装node建议先安装brew(不知道brew的搜索一下,先把brew安装好)brew install nodejs,linux用户可以直接去gituhb上下载源码编译安装。安装完node之后会有附带有npm程序,npm是前端的包管理软件,类似于java的maven和gradle,我们可以利用npm下载第三方库。

注意:linux和mac在安装完node之后需要解决权限问题,具体的解决方案在 这里
把权限解决了以后算是可以正式开始写代码了。

如何开始:🙄

如何快速投入到生产中,通过以下的学习曲线可以快速的把学到的东西快速的投入到生产。

对于es6的学习,为了快速,并不建议一开始就去了解es6的整个语法糖以及技巧用法,当对于大多数代码,es6和java是一样的。可以先挑几章看着。
http://es6.ruanyifeng.com

阮一峰写的es6入门,推荐以下几个章节 1.let和const命令,2.Promise对象 3.Generator 函数的语法 4.Generator 函数的异步应用 5.async 函数 6.Class 的基本语法 7.Class 的继承 8.Decorator 9.Module 的语法

通篇阅读这几个章节,对es6的语法以及前端Promise(Generator 与 async也是Promise的一种扩展)的用有个大致的了解,接下来我们就可以创建以es6语法为基础的应用了


chapter 2 创建应用 👈

package.json

package.json为前端工程主目录下的文件,用户管理包的依赖和前端工程的启动脚本,其他的功能我没用过,下面是一个ant工程的package.json文件的内容,可以参考一下。

{
  "name": "ant-design-pro",
  "version": "1.1.0",
  "description": "An out-of-box UI solution for enterprise applications",
  "private": true,
  "scripts": {
    "precommit": "npm run lint-staged",
    "start": "cross-env DISABLE_ESLINT=true roadhog dev"
  },
  "dependencies": {
    "url-polyfill": "^1.0.10"
  },
  "devDependencies": {
    "stylelint": "^8.4.0",
    "stylelint-config-standard": "^18.0.0"
  },
  "optionalDependencies": {
    "nightmare": "^2.10.0"
  },
  "lint-staged": {
    "**/*.{js,jsx}": "lint-staged:js",
    "**/*.less": "stylelint --syntax less"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 10"
  ]
}

初始化前端工程会可以使用npm init命令,这条命令可以生成一个package.json文件,根据提示信息生成完package.json文件后,就只有一些简单的项目信息,如果需要安装第三方依赖库,可以使用如: npm install --save jshint,这条命令会在dependencies下插入一条记录,如上dependencies里面的内容所示。 --save的意思是代码项目的依赖,dependencies里面的内容会直接编译到最终代码中去, npm install --save-dev jshint 如果加上--save-dev, 那么会在devDependencies里面插入一条相关记录,devDependencies里面的依赖项不会编译到代码当中去。什么样的代码不需要编译到最终代码中去?一些本身最为编译代码的库,如webpack这样依赖库是无需编译到最终代码中去的。

代码打包📦

代码为什么需要打包?

前面也说了,es6的语法很多浏览器不支持,而且作为单页面应用,代码也应该打包。

用什么工具打包?

webpack。

webpack如何使用?

webpack使用首先需要安装, npm install -g webpack

安装完webpack后,需要在项目的主目录里创建webpack.config.js作为webpack打包的描述文件。

// 這邊使用 HtmlWebpackPlugin,將 bundle 好得 <script> 插入到 body  
const HtmlWebpackPlugin = require('html-webpack-plugin');
const HTMLWebpackPluginConfig = new HtmlWebpackPlugin({
  template: `${__dirname}/index.html`,
  filename: 'index.html',
  inject: 'body',
});
// 檔案起始點從 entry 進入,也可以是多個檔案。output 是放入產生出來的結果的相關參數。loaders 則是放欲使用的 loaders,在這邊是使用 babel-loader 將所有 .js(這邊用到正則式)相關檔案轉譯成瀏覽器可以閱讀的 JavaScript。devServer 則是 webpack-dev-server 設定。plugins 放置所使用的外掛
module.exports = {
  entry: [
    './src/js/main.jsx',
  ],
  output: {
    path: `${__dirname}/dist`,
    filename: 'index_bundle.js',
  },
  resolve: {
    extensions: ['.js', '.jsx','.json'],

  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/, // 这里面的不解析
        loader: 'babel-loader',
        query: {
            presets: ['react', 'es2015', 'stage-0']
        }  
      },
    ],
  },
  devServer: {
    inline: true,
    port: 8008,
  },
  devtool: 'source-map',
  plugins: [HTMLWebpackPluginConfig],
};

这是一个webpack文件样例。
其中 entry 属性 表示打包需要的入口文件
output 属性表示打包完成输出的文件
module中的rule表示打包的规则,上面的文件中,打包使用babel-loader进行代码打包。 devtool:因为打包后的代码在前端页面中打开以后会面目全非,调试起来不方便,devtool增加里source-map文件之后,前端再打开调试工具的时候可以查看到源代码文件。 再多的我就不知道了,需要查看webpack的官网。

如上文件配置好之后,使用 webpack 命令,等待打包完成,会在dist目录下生成一个js文件,该文件就是最终代码,该js文件中包括了所有html,css,甚至是png等一些资源文件。

以上是创建一个简单的前端工程的大致思路,具体还是要实践,不懂的可以查看官方文档。


chapter 3 react ✍🏻

react简单介绍

react是什么?--react是一个前端框架

为什么要使用react --react使数据和展示分离,并且运用了组件化的思想,加快了开发效率。

如何开始?

先通篇读一下react的 基础部分。内容不多,基本两个小时就能理解。

理解redux

为什么要用redux?

react的理念是很简单,很理想化的,单凭react一些功能是做不到的,如网络请求。

react本身并不是很复杂,其理念也很简单。主要理念是数据归谁管,数据流向的问题。
react+redux+es6+react-redux-dom等等,这么多库加起来可能就晕了,一下子理解不了,请不要慌,我们可以把用户操作到页面输出想象成一个状态机机制,状态及最基本的是要能形成环状结构,用户点击了查询按钮,到页面输出一个表格,数据需要流转,至于如何流转,请看一下 这篇文章
阮一峰写的 redux入门 对于看了官方redux还不懂的人是个福音。

我写了一个testFetch的例子,在github上,下载下来,看代码,不懂的可以问我,是一个很好的react+redux的例子。


chapter4 ant-design 👧🏿

ant design入门

如果上面几个步骤都完成了,那么可以进入ant-design的学习了,我也是在看ant design的例子。ant-design的理念是基于react+redux的,它简化了redux,使使用者使用起来更加方便了。

文档

入门ant design最快的方式还是需要翻阅ant的 官方文档
先看快速上手和项目实战体会一下ant。

七创后台管理目录结构

ant-design的目录结构如下

├── assets
├── common
├── components
├── conf
├── e2e
├── index.ejs
├── index.js
├── index.less
├── layouts
├── models
├── rollbar.js
├── router.js
├── routes
├── services
├── theme.js
└── utils

以上目录结构是src目录中的

routes: 最终页面展示的内容,可以理解为testFetch中的containers目录。

services: 网络请求。

models: 定义reducers以及effect。

components: 组件目录

其他的我暂时没有接触,还不知道用来做什么,等熟悉了一点再更新。

dva是redux和elm的缩影,官方文档在 这里

[站外图片上传中...(image-8ec32c-1525610542712)]


到这里我估计基本的改现有代码需求是没有多大问题的,如果代码中还有看不懂的地方,只能花时间去摸索了。


end

相关文章

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

  • React Native学习资料

    React 入门实例教程React-Native入门指南Flex 布局教程:语法篇React Native探索(二...

  • React Native

    JavaScript 标准参考教程(alpha)ECMAScript 6入门 React 入门实例教程React ...

  • React 实践(一)

    参考:《React 入门实例教程--阮一峰》、《React 学习教程--众成翻译》。React 框架入门学习摘录。...

  • awesome-react-native

    React React 中文文档一定要看官方文档 React 入门实例教程阮一峰老师出品,最好的 react 入门...

  • 慕课视频

    免费 《Web安全-XSS》《ReactNative基础与入门》《React入门》《在React中使用Redux数...

  • React入门-001

    +++Categories = ["React",]Tags = ["React","入门",]date = "2...

网友评论

      本文标题:react入门

      本文链接:https://www.haomeiwen.com/subject/uqfprftx.html