我开发中总结的小技巧

经过一段时间的react开发,自己总结了一些小习惯,自动构建webpack

1. 组件命名文件夹

一个组件一个文件夹,可读性高,结构清晰



文件夹:Danamic(组件首字母大写)

index.jsx
style.less
data.js

引用 :


import Danamic from ‘./Danamic‘

webpack能自动识别文件夹内index文件 (index首字母只能小写)

React 的 JSX 里约定分别使用首字母大、小写来区分本地模块的类和 HTML 标签

2. 无状态组件



import React from ‘react‘
import { render } from ‘react-dom‘

function isEmpty(obj) {
    return obj === null || obj === undefined
}

export default ({ type, clickFn }) => {
    let text = ‘‘
    switch ((isEmpty(type) ? ‘‘ : type).toString()) {
        case "2":
            text = ‘没有更多了‘
            break
        case "1":
            text = ‘点击加载更多‘
            break
        case "0":
            text = ‘网络加载问题,请稍后重试‘
            break
    }
    return <div className="warning" onClick={clickFn}>{text}</div>
}

没有性能上的差别,就是实现同样的功能,可以少写下面这些代码


export default class extends React.Component {
    constructor(props) {
        super(props)
    }
}

3. static react.propTypes


constructor(props) {
    super(props)
  }

static propTypes = {
        info: React.PropTypes.object.isRequired,
        loginSuccess: React.PropTypes.func.isRequired,
    }
  

加上propTypes 能一眼看出父组件传的参数以及类型

4. 提取数据请求


data.js



import React from ‘react‘
import ajax from ‘ajax-promise-simple‘
import loadPage from ‘@/common/loadPage‘

module.exports = {

    //获取全部评论
    async getList(params) {
        let result = await ajax.getJSON(‘/amsquare/detailcomment‘, params)
        return { succsess: result.code === 0, data: result.data ? result.data : [] }
    },

    //点赞
    async zanClick(params) {
        let result = await ajax.getJSON(`/amsquare/addcmtpraise`, params)
            // console.log(params)
        return { succsess: result.code === 0 }
    },

    //删除动态
    async removeDT(params) {
        let result = await ajax.getJSON(‘/amsquare/deldymanic‘, params)
        if (result.code === 0) {
            const url = `http://wen.58.com/amsquare/main?from=weijiaoliu_nav`;
            const browser = window.____json4fe.browser;
            loadPage(url, browser, false)

        }
    },

}

应用:



import { getList } from ‘../data‘

getListData = async () => {
        this.setState({
            loading: true
        })
        let { succsess, data } = await getList(this.infoConf)
        this.setState({
            loading: false
        })
        if (succsess) {
            this.setState((preState, props) => ({
                hasMore: data.length < this.infoConf.pageSize ? false : true,
                resultStatus: data.length < this.infoConf.pageSize ? 2 : 1,
                list: [...preState.list, ...data],
            }))
            this.infoConf.pageindex++;
        } else {
            this.setState({
                resultStatus: 0
            })
        }
    }

5. 将多个组件放在一个index对外导出



import ajax from ‘./ajax‘
import lazyload from ‘./lazyload‘
import momentHelper from ‘./momentHelper‘

export default { ajax, lazyload, momentHelper }

6. 提取封装 共用组件

例如:

  • loading
  • log
  • debounce
  • 滑动加载更多
  • app下判断登录
  • app下跳转页面

引用:



import { scrollBottom, debounce } from ‘@/common/scrollData‘

使用 @ 相当于src目录 (自动构建配置) (比用 ../ ./ 好理解一些)

7. 用let替换var

8. 代码加注释

9. webpack.config.js



resolve: {
    ...
    extensions: [‘.ts‘, ‘.tsx‘, ‘.js‘, ‘.json‘, ‘.styl‘, ‘.less‘],
    ...
  },

require的时候可以直接使用require(‘file‘),不用require(‘file.js‘)

10.webpack 端口号随机


 port: Math.floor(Math.random() * 1001) + 7000,


最近写文档比较多,所以把MarkDown整理了一遍,有需要可以参考:

我的MarkDown学习之旅

来源:https://segmentfault.com/a/1190000011605171

原文地址:https://www.cnblogs.com/lovellll/p/10162087.html

时间: 2024-08-29 06:47:32

我开发中总结的小技巧的相关文章

iOS开发中的那些小技巧

一,前言 看到这个图,你会想起谁?是不是想起了,曾经的用户名输入框,密码输入框... 那么,问题来了:作为iOS开发的你,这个输入框你是怎么实现的,成为关键. 二,方案 方案1:弄一个UIView,在这个视图上分别放三个控件:UIImageView,UILabel与UITextField.(这个方案很直接,如果你只是简单的直接将三个控件放到视图上,那么你的月薪暴露了,最多3K.如果你是对这个视图重写了,将那三个控件封装起来了,放在.h文件,那你的月薪应该是3.5K,如果是将那三个控件放到.m文件

RS开发中的一些小技巧[不定期更新]

从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧,都是些基本的东西,已掌握的可以来温习一下,没掌握的希望可以帮到大家 一:UI设计 1.1:配色 可以利用字体颜色.背景颜色.图片等来补充RS常规报表以及单个数据项的单调感,例如下面通过图片以及字体颜色调整过的报表的效果 1.2:布局 布局大家都知道使用table了,提前像设计HTML的页面一样规划好

Snail—iOS开发中得一些小技巧

开发中 常常会使父视图的透明度改变,而子视图不受父视图的影响,则下面这段代码可以完美解决.... fatherView.backgroundColor = [[UIColor lightGrayColor] colorWithAlphaComponent:0.6]; 版权声明:本文为博主原创文章,未经博主允许不得转载.

JS开发中常用的小技巧

1.获取指定范围内的随机数 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min + 1)) + min; } 2.随机获取数组中的元素 function getRadomFromArr(arr){ return arr[Math.floor(Math.random()*arr.length)]; } 3.生成从0到指定值的数字数组 function getArray(len) { var arr

JS开发中的一些小技巧和方法

生成指定范围内的随机数 当我们需要获取指定范围(min,max)内的整数的时候,下面的代码非常适合:这段代码用的还挺多的. function setRadomNum(min,max){ return Math.floor(Math.random() * (max - min + 1)) + min; } json转url参数 当我们进行http请求时,可能需要把json转化为url参数,这时下面这段代码就派上用场了. function json2url(json) { var arr=[]; f

Java开发中的一些小技巧

原文:http://www.cnblogs.com/xdp-gacl/p/3490276.html 一. Java获取URL地址中传递的参数 /** * 获取URL中的参数名和参数值的Map集合 * @param url * @return */ private Map<String, String> getUrlPramNameAndValue(String url){ String regEx="(\\?|&+)(.+?)=([^&]*)";//匹配参数

日常开发中的shell小技巧

工具推荐 命令行中很方便的代码统计工具---cloc 模拟生成熵(避免暴力手搓键盘) sudo rngd -r /dev/urandom -o /dev/random -f 自动输密码的脚本,基于expect #!/usr/bin/expect set password "butub" set files [glob -nocomplain -- ./*.deb] puts "[llength $files]" for {set i 0} {$i<[lleng

前端开发中常用的小技巧整理

1.控制超出部分显示省略(单行): white-space: nowrap; text-overflow:ellipsis; overflow: hidden; 下面使用css3部分控制多行超出部分显示省略(此处适配谷歌内核浏览器): overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; /* 设置最高值,防止超出

Wince6.0应用开发:三、小技巧揭秘

在Wince6.0的应用开发过程中,掌握一些使用的小技巧,必定会事半功倍 那么,你做好心里准备了吗?3.2.1. 技巧一:我会告诉你你为Wince开发的程序可以在你的电脑上运行!                     这个技巧的用途有两个 1.测试程序能否达到预期效果 还记得我们上一篇帖子在模拟上用的小程序吗? 我们现在PC上运行一下 2.捕捉在Wince上不显示的异常 有时候,在Wince上运行应用程序,即使出错了也不会抛出异常,当这个时候我们只需要在电脑上运行程序便会捕捉到程序的异常,这对