我只想知道写react组件,不想学习webpack,等那些构建工具

最近公司在做一个建站的项目, 项目中组件化的部分使用了react,并通过browserify(也可以使用webpack,gulp, grunt……)构建工具,配合babel 对jsx进行ES6转义。
我感觉自从我做前端一来,前端的轮子越来越多,越来越大,想写个hello world ,有时候都需要经过步骤1,2,3,4,在我研究webpack时, 最感同身受的一句话就是“前端圈需要有个配置工程师,专门研究各种工具的使用文档”,我自己老早就想写这一篇文章,虽然内容并不会太深,只是想对最近一个月工作的一个总结,并希望通过总结找到我还遗漏了哪些地方,今天韩语老师身体不舒服,可以有时间写一篇。


我每次在家(笔记本没有工作环境)时,想写react 总觉得需要准备的环境很多, 我想用react 但是我想用es6去写react,觉得需要准备很多,于是,我就找了找,如何不需要构建工具,直接在浏览器端就直接运行 然后 编译es6代码, 虽然 在浏览器端编译会慢一些,但是只是为练习写组件,尝试react编写,暂时就够了。。

关于react的几个方向
  • react构成

    • react
      我现在工作内容很简单,使用react&react-dom就好,主要是进行组件的编写。包含api:React.createElement .createClass .Component .PropTypes .Children
      使用方法
      import { Component } from 'react'
      import { render } from 'react-dom';
      class Audio extends Component{
      render(){
      return(<div>3333</div>)
      }
      }
      export default Audio
      render(<Audio />, document.getElementById('app'))
      我开始接触react时,就已经在用es6,去写,所以关于其他的写法,没有进行过复习。
  • react-dom
    主要负责将我们编写的组件渲染到dom中,提供的api:ReactDOM.render .unmountComponentAtNode .findDOMNode

  • react-dom-server
    负责进行服务端渲染,将渲染dom的过程留在服务端,减少浏览器端的渲染成本,包含api:.renderToString 和 .renderToStaticMarkup

  • react-with-addons
    与react数据流相关,react本身是单向数据绑定,不同于angular,vue, 但是提供了这个包,来使得开发者对数据进行额外的操作,具体不了解,没用过。

    React Native
    没用过,看网上的文章 应该是为了让同一套代码运行在多个平台,而提供的一门技术,与之相比较的可以用最近半年比较火的 weex, 基于vue的。

  • ES6 with Babel

  • es6
    es6 提供了很多比较简化代码的方法,最喜欢用的像模块化,结构赋值, 数组填充,对象拷贝,如果有深度拷贝就更好了。关于模块化,这个 需要对比我们常用的模块化规范说一下

CommonJS 服务端(node)的模块加载规范,是同步的,因为在本地目录加载文件,速度很快不需要异步
AMD与CMD是浏览器端的两个模块加载规范,是异步的,两个再具体实现也是有差别的。关于模块加载是什么鬼,可以看一下我之前自己写的一个AMD模块加载的代码,,,
但是 这三者有一个共同点:都只能在运行时确定模块的具体内容。只有浏览器运行时,通过加载某个文件即模块,来获得这个对象。
由于es6的模块化写法,则是在编译时加载,我已开始有个疑问,js代码不是不需要编译么,问过同事,给的合理的解释 就是,是浏览器对es6代码进行进行的编译,同理 浏览器也会对es5代码进行编译。ES6模块不是对象,而是通过export命令显式指定输出的代码,这在一定程度上解决了之前循环加载的问题,但是 es6 对除去对象的循环加载输出并不是像期待的那样,参考

原本ES6模块化的引入,原本是弥补浏览器端缺失的模块加载这个功能,但是由于浏览器或者服务端 貌似都没有想好怎么支持这个,所以就到了babel出场了。

  • babel
    这个是这一年多与webpack 结合比较火的工具,babel以转化es6代码闻名,后来又不甘心只做这一件事,于是就有了babel5.0 到6.0的故事
    babel 与之前的react 类似,都是 由一个大而全的包,拆成了许许多多独立的小包,优点是 我们用的时候 捡那些需要用的用,不需要的就不引用,缺点是,以前引用一个就够了,现在 不知道引用哪一个,呵呵哒
    ·还有一个需要注意的从Babel 6.0开始,不再直接提供浏览器版本,而是要用构建工具构建出来。如果你没有或不想使用构建工具,可以通过安装5.x版本的babel-core模块获取· cdn地址6.0以后的无法使用
    例如
    <html>
    <head>
    <title>react入门知识</title>
    <meta name="content" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
    <script src="http://cdn.bootcss.com/babel-core/5.8.23/browser.min.js"></script>
    </head>
    <body>
    <script type="text/babel">
    class Test {
    test() {
    var ss = new Array(2).fill(3)
    console.log(ss)
    }
    }
    var test = new Test;
    test.test();
    </script>
    </body>
    </html>
    在script标签的type属性是“text/babel”需要注意,这样我们就可以 写es6的代码了。

    Paste_Image.png

    注意到这里还有一个polyfill, babel再做转化时,Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,阮一峰大神这样解释道,像箭头函数,结构赋值 这都是新的句法 但是像Array.from这个只是array类的一个新的api 所以会被忽略,这时候,我们还需要额外引用polyfill,记住测试的时候,在手机端测试效果比较明显,因为 pc端的chrom支持的差不多了,所以你看不出效果
    关于babel的那些包怎么使用,怎么权重,我其实今天也看了许多文章,可以总结一些,但是我现在困了,不想写了,有时间再补上。其实我觉得阮一峰大神的这篇文章就已经说的很明白了

  • 快速用react写组件
    终于切入正题

      <html>
          <head>
              <title>react入门知识</title>
              <meta name="content" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
              <script src="http://cdn.bootcss.com/babel-core/5.8.23/browser.min.js"></script>
              <script src="//cdn.bootcss.com/react/15.4.1/react.js"></script>
              <script src="//cdn.bootcss.com/react/15.4.1/react-dom.js"></script>
              </head>
          <body>
              <div id="app">
    
              </div>
              <script type="text/babel">
                  var { render } = ReactDOM
                      ,{ Component } = React
                  class App extends Component{
                      render(){
                          return ( <div>hello,world</div> )
                      }
                  }
                  render(
                      <App/>,
                      document.getElementById('app')
                    );
              </script>
          </body>
      </html>
    

关于webpack是一个大坑,我每次研究他一下午就过去了,这个也需要写一篇笔记,但是最近工作一直再用react 加上 我现在工作上并不需要用,所以就先暂缓,接下来 就是react组件上一些注意的地方,改天再写吧。
我已经好久好久没有写过笔记了。对前端的热衷远不及我微博加的那些大神,就让我安静的做个切图工程师

我穿的珠子有没有很好看
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 无意中看到zhangwnag大佬分享的webpack教程感觉受益匪浅,特此分享以备自己日后查看,也希望更多的人看到...
    小小字符阅读 8,121评论 7 35
  • 网上对于 React 的相关教程层出不穷,官方文档也对其中的技术要点做出了充足的解释,只是不那么简洁易懂。但有了这...
    hylerrix阅读 1,310评论 2 5
  • react+redux+webpack+babel+npm+shell+git这方面的内容我会随时更新,更新内容放...
    liangklfang阅读 643评论 0 1
  • 今天是女友的生日,那么索性分享关于感情的一点浅见吧。 身边有不少单身的朋友,或帅锅或靓女,偶尔会因为找不到合适的另...
    老范说阅读 137评论 0 1
  • 一直以为我在全心全意的爱着孩子,才发现原来孩子也在全心全意的爱着我。安排好事情,准备到苏州参加两个月培...
    婉兰_cf4d阅读 212评论 0 0