React:kdlzx(APP)实战项目笔记(前端部分-完结)

大家好,我是梅巴哥er。本篇是在写react这个项目时做的流水笔记。这篇是前端部分,也就是基本的页面组件和样式。
项目已完结,等我研究研究github,到时候把完整代码传上去做个分享。

kdlzx项目笔记

1,安装react脚手架,用来搭建项目

  • npm install -g create-react-app

2,创建项目kdlzx

  • create-react-app kdlzx

3,进入安装目录

  • cd kdlzx

4,启动项目查看安装是否成功

  • npm start

5,项目集成less

  • 解包脚手架 npm run eject注:这个命令是为了把隐藏的webpeck文件暴露出来。此操作不可逆,操作须慎重

  • 解包后,启动项目。看下该项目是否正常启动。如果由类似报错: Connot find module '@babel/plugin-transform-react-jsx'。可以尝试解决办法:

    • 删除项目下node_modules文件夹
    • node i
  • 安装less环境

    • 安装less 和 less-loader 。 npm i less less-loader -S

    • 把less 和 less-loader配置到webpack文件中。大致配置三处。

      • 第一处:模仿css来配置less。
        React:kdlzx(APP)实战项目笔记(前端部分-完结)_第1张图片

        代码:

        // 添加配置less模块
        const lessRegex = /\.less$/;
        const lessModuleRegex = /\.module\.less$/;
        
        • 第二处:React:kdlzx(APP)实战项目笔记(前端部分-完结)_第2张图片
          代码:

          lessOptions, // 这个是放在上面括号里面的,看图
              
          // 这里也要添加一下less配置和 less-loader
                {
                       
                  loader: require.resolve('less-loader'),
                  options: lessOptions,
                },
          
          • 第三处:React:kdlzx(APP)实战项目笔记(前端部分-完结)_第3张图片
            代码:

            // 这里模仿sass 配置less和less-loader
            // Adds support for LESS Modules, but using LESS 
            // less start
                        {
                           
                          test: lessRegex,
                          exclude: cssModuleRegex,
                          use: getStyleLoaders({
                           
                            importLoaders: 1,
                            sourceMap: isEnvProduction && shouldUseSourceMap,
                          }),
                          sideEffects: true,
                        },
                        {
                           
                          test: lessModuleRegex,
                          use: getStyleLoaders({
                           
                            importLoaders: 1,
                            sourceMap: isEnvProduction && shouldUseSourceMap,
                            modules: true,
                            getLocalIdent: getCSSModuleLocalIdent,
                          }),
                        }, // less end;
            

            参考:在react中的less配置

6,搭建项目文件

  • 把src文件夹的文件全部删除。自己写入口文件index.js。写入代码,,启动测试。React:kdlzx(APP)实战项目笔记(前端部分-完结)_第4张图片

  • 在src文件夹中,新建文件夹assets。这个文件夹下,放fonts styles images等文件夹。

  • ReactDOM.render()放在App.js里,而不是index.js

  • index.js里放什么呢? index.js是入口文件,在项目中,就像一个清单一样。用来引入核心组件,例如./pages/App,引入初始化的样式,引入全局样式等。

7,测试less的安装和配置情况

  • setyles文件夹,新建core.less文件,加入代码:

    @charset "utf-8";
    
    @color: pink;
    
    body {
        background-color: @color;
    }
    
    

    npm start查看运行结果。样式显示出来,就说明配置成功了。

8,登录页面展示,开始布置登录页面。

9,重置样式、设置页面高度

  • 安装: npm install --save normalize.css

https://github.com/necolas/normalize.css

  • index.js中引入 import 'normalize.css'

10,封装自己的第一个组件: Img组件,把引入img抽离成一个组件

  • 需要抽离组件的原因是, 我们每次引入图片时,前面的路径都是重复的。 比如引入logo图片,import Img from '../assets/images/logo.jpg',其实就是路径'../assets/images/' + '文件名 logo.jpg

  • 需要注意的是,平时引入都是用import, 但是为了方便写组件,在Img.js里,用了require 。 require里包含 重复的路径 + 文件名。 文件名通过父组件LoginPage的参数props来获取。

11,用户名,密码的登录表单

  • 用户名和密码输入框很像,可以做成一个组件来调用

  • 登录,忘记密码,免费注册,游客登录等,都是点击的按钮,也可以做成组件

  • 字体的引入。用阿里的iconfont,把需要的字体下载下来,然后这6个样式文件放入fonts文件夹中。用import引入iconfon.css。一定不要少引入样式文件,不然图标显示不出来的。React:kdlzx(APP)实战项目笔记(前端部分-完结)_第5张图片

  • 设置input输入框的样式。达到美观效果。注意全局样式和局部样式。全局样式写在core.less里面。注意,这里图标是固定的大小和位置,右边输入框是弹性的,所以用到了弹性布局display: flex;

  • 调整输入框里不一样的内容。比如图标、placeholder的属性值、type类型等。用父传子的参数进行调整。 需要注意的是,图标的className的拼接方式*className*={"iconfont icon-" + this.props.iconName},千万不要忘了大括号{ },且要注意大括号的位置。因为js语法都要写在{}里。

  • 4个按钮的组件抽离。边写边考虑4个按钮的不同之处,然后加上相应的参数。通过三元运算符的判断,来决定他们用哪些属性。

  • 注意,按钮的组件,我们用的是双标签,和输入框略微有点区别。 因为这样更容易通过this.props.children来获得按钮里的字。

  • 因为这4个按钮的大小和位置都不一样,所以要通过组件的类和样式,对按钮进行调试和代码简化。需要注意,这里的登录按钮里,

  • 关于空格的小知识点, 是不换行空格,受字体宽度影响。 &emsp是一个中文宽度的空格。这两者基本不受字体宽度的影响。详情可看html中的空格标记

  • 关于touch-action的知识点。这个语句在写APP的时候,是必写的。在core.less全局样式文件里,有一个属性touch-action: pan-y;,这个意思是启用单指垂直平移手势,可以用手指拖动页面上下滑动。更多touch-action知识

12,为主页HomePage做准备之移动端UI框架antd-mobile

  • 12.1 项目需要用到移动端的UI框架antd-mobile(官方文档)。所以需要先熟悉一下框架应用。

    • 安装 npm install antd-mobile --save

    • index.html中添加html的相关配置。第一个

你可能感兴趣的:(react)