无需Webpack开撸React

207 阅读2分钟

译者:非主流童话

原文链接

Webpack虽好,但对于一个React新手来讲,如何开始是个很大的挑战。我就遇到很多初试身手的开发者在学习React的康庄大道上被难倒而功亏一篑,原因就是陷入了Webpack和配置的坑里。

为证明你可以专注学习React而无需ES2015、JSX编译以及Webpack的帮助,我撸了一个样例库,你可以在GitHub得到它。

这个仓库使用Gulp来合并、压缩你的文件,无需ES2015或是JSX。要是你想专注于React,余事勿扰,那就不妨一试。

你只需克隆一份这个仓库代码,运行npm install来安装Gulp。至此,你可以运行gulp build来启动你的应用,运行gulp serve 来启动一个本地的实时服务器。你的代码变化,服务就会自动刷新。

什么?没有JSX?!

JSX很棒,我也正在很多项目中使用它。不过在我们刚起步时候,那应该是理解React概念并按它的方式工作那个步骤的事情了。由于JSX是在React.createElement进行变换的,我们直接调用它就好了:

<Foo name='jack' />
// 等价于:
React.createElement(Foo, { name: 'jack' }, null);

<p>
  <span>Hello</span>
</p>
// 等价于:
React.createElement('p', null, React.createElement('span', null, 'Hello'));

不过,你很快就会发现它变得啰嗦无比。于是乎,我在这个仓库了包含了一个全局的简写函数h

<Foo name='jack' />
// 等价于:
h(Foo, { name: 'Jack' });

<p>
  <span>Hello</span>
</p>
// 等价于:
h('p', [
  h('span', 'Hello')
]);

对这个库,一个自然而然的改进就是增加JSX的support,但我懒虫上头,留给读者了。

没有模块

由于这个库避免使用ES2015和任何编译,这库里没有可用的模块系统。取而代之的,我们只有一枚全局变量, app。这里面包含我们的应用的一切。这不是很好,不过把一切都存在一个全局变量里面,并不是特别坏的做法,并且意味着无序模块系统了。

没有依赖管理

为了避免包依赖冲突和加载开销,所有的依赖都存在vendor文件夹,并且都已经提交在Git里面。

我应该在大型React生产程序中使用这个库么?

不应该。从应用角度来看,像Webpack这样的工具,ES2015 / JSX编译还有依赖管理都是令人难以置信的有用。但是在你做小的应用时候,又不是必须的。如果你在构建一个小的React应用来学习,那么我推荐用我的库开始,并且随着你对这些生态系统的熟悉,你可以逐渐尝试加入ES2015, JSX, Webpack等等。


如果你想就这边博客做更深入的讨论,或者咨询任何问题,请tweet我.