1、css
umi(中文名:五米)是我目前的工做重点,正在全力开发中,从写下第一行代码开始算起已有数月。但从闲聊和邮件中发现很多人还不能准备地理解 umi 是啥、能作啥,因而趁着代码写累了,聊聊 umi 的一些状况。html
umi 是工具吗?是。但不只仅是。我给 umi 的定位是开发框架,目前包含工具 + 路由,不包含数据和视图。 因此 umi[工具 + 路由] + dva[数据] + antd(-mobile)[视图],很配哦。另外,umi 目前基于 React,不支持 Vue 和其余框架或者无框架的开发方式。react
前面说的目前,实际上是精力有限。webpack
2、git
你们可能会以为,umi 有啥特别的,工具用 webpack + webpack-dev-server + babel + postcss + ... ,路由用 react-router 不就完了吗?github
这是上一代的使用方式,工具是工具,库是库,泾渭分明。而近来,咱们发现工具和库其实能够糅合在一块儿,工具也是框架的一部分。 经过约定、自动生成和解析代码等方式来辅助开发,减小开发者要写的代码量。next.js 如此,umi 也如此,Compilers are the New Frameworks 。web
3、npm
那么,为啥要把路由层作进去?浏览器
路由即页面,而页面是构成应用的单位。接管了路由层,意味着更多的可能性,能够管控每一个页面的生成、切换、销毁等。框架能作的事情多了,才更有存在的意义。bash
好比:
4、
因此,umi 有啥?我为何要用?
简单来讲,有如下 4 点:
(没了?🏃🏃🏃 先别走,听我细细道来。。)
5、
开箱即用?那么箱子里有啥?
咱们来对比下,以 roadhog 初始化一个项目为例。
roadhog:
umi:
只需一步,剩下的都不用作,由于在 umi 这个箱子里了。 不过不少东西虽然已经在了,但仍保留让用户选择的权利,好比选择 preact 仍是 react,好比 antd(-mobile) 的版本,eslint 规则可覆盖可 merge 等等。
6、
umi 在性能上作了不少努力,这些对于开发者是无感知的。“你只管写业务代码,我会负责性能”,而且随着 umi 的迭代,我保证你的应用会愈来愈快。
主要有:
umi/dynamic
和 import()
语法,分别用于懒加载组件和模块优化点不少,有些关乎尺寸,有些关乎执行效率,有些关乎首屏时间,有些关乎用户体验,细聊的话,能说上几个小时。你们根据关键字应该能猜个大概,这里就不展开了。
7、
umi 就是为多端而生的,这里的多端指的是 web + 各类容器,好比说咱们须要同时把代码部署到支付宝钱包的离线包和在线服务器。
由于 umi 的产物是单页应用,同时单独访问每一个页面又都有效,因此能够在容器模式里经过 ap 进行跳转,在线模式下又经过路由跳转。模式的自动切换,咱们是借助 bridgex 进行实现。
8、
umi 在开发体验上也算得上是呕心沥血了。
首先,借助 create-react-app 的开源库,他的体验是咱们的底线。像是 redbox 显示出错信息、HMR、出错点击后跳转到 IDE、ESLint 出错提示等等。
此外,umi 还作了更多:
9、
什么样的项目适合用 umi ?
umi 是通用方案,我能说什么类型的都适用吗?😆 好吧,我说说什么项目不适用吧。
10、
有点心动了,我该如何开始 Getting Started 呢?
先安装 umi
。
$ npm i umi -g
# 检查版本号
$ umi -v
umi@1.0.0-rc.1
复制代码
而后新建目录并进入。
$ mkdir myapp
$ cd myapp
复制代码
启动 umi 的 dev 服务器。
$ umi dev
复制代码
新开个 terminal,在 pages 目录下新建 page component 。
$ echo 'export default () => <div>Index Page</div>' > pages/index.js
复制代码
在浏览器中打开 http://localhost:8000/,你会看到 Index Page
。
简单吧!
最后,umi@1.0 将于 2 月初正式发布,敬请关注。
相关连接:
(完)