写在前面

Omi 4.0 发布至今,收到了大量的意见和建议以及真刀真枪的 PR,虽然现在接受 Omi 都是外国友人,但是随着 IE 市场份额的慢慢消失,可以遇见的未来,国人也会慢慢拥抱 Omi。Omi Team 经过一个星期的努力,终于完成了核心的生态的构建,用来服务海量的开发者,当然这只是一个起点,欢迎有任何需求给我们开 Issues, 我们对待你提的 issues 处理的速度会令你感到惊讶。 下面郑重介绍下最近一个星期我们的工作:

项目 描述
omi-docs Omi 官方文档
omi-devtools 谷歌浏览器开发工具扩展
omi-cli 项目脚手架工具,支持 Javascript 和 Typescript
omi-i18n Omi 国际化解决方案
omi-transform Omi 和 css3transform 完美结合. 让 css3 transform 在你的 Omi项目中变得超级简单.
omi-page 基于 page.js 的 Omi 路由
omi-tap 让 Omi 项目轻松支持 tap 事件
omi-finger Omi 官方手势库
omi-mobx Omi Mobx 适配器
omi element ui(working) Omi 版本的 element-ui
westore 小程序解决方案 westore,与 Omi 互相启发
omi 周边 T恤、衣服、手机壳、包包等

文档国际化

我们现在拥有了三个语言版本的开发文档:

语言 快速入门 主要概念
英语 English English
中文 简体中文 简体中文
韩文 한국어 한국어

土耳其版本和日语版本的相关文档也正在紧急补齐当中。

开发者工具

使用 Omi 开发工具 可以非常简单地调试和管理你的 UI。不需要任何配置,你只要安装然后就能调试。

既然 Omi 使用了 Web Components 和 Shadow-DOM, 所以不需要像 React 和 Vue 一样安装其他元素面板,只需要使用 Chrome 自带的 Elements' sidebar 便可,它和 React and Vue 开发者工具一样强大。

工具由土耳其大神 F 亲自操刀打造。你可以 从 Chrome 应用商店安装。

omi-cli

安装

$ npm i omi-cli -g               # install cli
$ omi init your_project_name     # init project, you can also exec 'omi init' in an empty folder
$ cd your_project_name           # please ignore this command if you executed 'omi init' in an empty folder
$ npm start                      # develop
$ npm run build                  # release
复制代码

目录说明:

├─ config
├─ public
├─ scripts
├─ src
│  ├─ assets
│  ├─ elements    //存放所有 custom elements
│  ├─ store       //存放所有页面的 store
│  ├─ admin.js    //入口文件,会 build 成  admin.html
│  └─ index.js    //入口文件,会 build 成  index.html
复制代码

使用 TypeScript 模板(omi-cli v3.0.3+):

$ npm i omi-cli -g                  # install cli
$ omi init-ts your_project_name     # init project, you can also exec 'omi init-ts' in an empty folder
$ cd your_project_name              # please ignore this command if you executed 'omi init' in an empty folder
$ npm start                         # develop
$ npm run build                     # release
复制代码

Cli 自动创建的项目脚手架是基于单页的 create-react-app 改造成多页的,有配置方面的问题可以查看 create-react-app 用户指南。

感谢 xcatliu 和 uxu 为 omi-cli 做出的贡献。

omi-i18n

你可以通过 omi-i18n 开速开发国际化的 Omi 项目:

import { tag, WeElement } from "omi";
import { t } from "omi-i18n";const catalog = {welcome: "Welcome to {{name}} using omi-i18n"
};@tag("my-app")
class MyApp extends WeElement {render(props, data) {return (<i18n-provider locale="en" catalog={catalog}><p slot="loading"><spinner-element /></p><h1 class="app-title">{t("welcome", { name: data.name })}</h1></i18n-provider>);}
}
复制代码

omi-transform

如果你使用过 css3transform, 就知道制作页面动效是多么地惬意。现在,你再 Omi 项目里也可以使用上 css3transform 的优秀的特性并且拥有同样高效的性能:

import { render, WeElement, tag, observe } from "omi";
import "omi-transform";@observe
@tag("my-app")
class MyApp extends WeElement {install() {this.data.rotateZ = 30this.linkRef = (e) => {this.animDiv = e}}installed() {setInterval(() => {// 慢,因为直接改变 data 会触发 update -> render -> diff -> apply diff// this.data.rotateZ += 2//快,因为直接操作 domthis.animDiv.rotateZ += 2//同步 transform 给 data 防止任何 updatethis.data.rotateZ = this.animDiv.rotateZ}, 16)}render(props, data) {return (<css3-transform rotateZ={data.rotateZ} translateX={0} perspective={0} ><div ref={this.linkRef}>omi-transform</div></css3-transform>)}
}render(<my-app />, "body");
复制代码

你可以通过上面展示的简单小技巧直接操作 DOM 获取高效的运动性能并且也能应对任何形式的组件更新而不丢失状态。

omi-page

基于 page.js 的 Omi 路由。

→ demo

使用:

import { render, tag, WeElement } from 'omi'
import page from 'omi-page'@tag('my-app')
class MyApp extends WeElement {installed() {page('/', this.index)page('/about', this.about)page('/contact', this.contact)page('/contact/:contactName', this.contact)page('*', this.notfound)page()}render() {return (<div><ul><li><a href="/">/</a></li><li><a href="/about">/about</a></li><li><a href="/contact">/contact</a></li><li><a href="/contact/me">/contact/me</a></li><li><a href="/contact/me?a=b">/contact/me?a=b</a></li><li><a href="/not-found?foo=bar">/not-found</a></li></ul><p>{this.data.path}</p></div>)}index = (ctx) => {this.data.path = ctx.paththis.update()}about = (ctx) => {this.data.path = ctx.paththis.update()}contact = (ctx) => {this.data.path = ctx.paththis.update()}notfound = (ctx) => {this.data.path = ctx.paththis.update()}
}render(<my-app></my-app>, 'body')
复制代码

如果你知道 express,page.js 完全受 express 启发。了解 express 你就肯定能够快速上手 omi-page。

omi-tap

Omi 不仅可以开发 PC 网站,我们拿来开发微信和手机 QQ 的 Web 页面,也叫 H5 页面。所以提供了 omi-tap 绑定 tap 事件来解决移动端 click 300ms 延迟的问题,使用方式也是极其简便:

import { render, WeElement, tag } from "omi"
import "omi-tap"@tag("my-app")
class MyApp extends WeElement {onTap = () => {console.log('tap')}render() {return (<omi-tap onTap={this.onTap} ><div>Tap Me!</div></omi-tap>)}
}render(<my-app />, "body");
复制代码

omi-finger

针对移动端,负责的手势交互,我们也提供了 omi-finger 手势交互库。你可以移动端打开这个页面看看 omi-finger 的能力:

→ omi-finger demo

使用:

import { render, tag, WeElement, observe } from 'omi'
import 'omi-finger'@observe
@tag('my-app')
class MyApp extends WeElement {install() {this.data.wording = 'Tap or Swipe Me!'}handleTap = (evt) => {this.data.wording += '\r\nTap'}handleSwipe = (evt) => {this.data.wording += '\r\nSwipe-' + evt.direction}render() {return (<div><omi-finger onTap={this.handleTap} abc={{a:1}} onSwipe={this.handleSwipe}><div class="touchArea" >{this.data.wording}</div></omi-finger></div>)}
}render(<my-app></my-app>, 'body')
复制代码

支持手势列表:

手势
onTap
onMultipointStart
onLongTap
onSwipe
onPinch
onRotate
onPressMove
onMultipointEnd
onDoubleTap

omi-mobx

Omi 内置的 observe 是通过 proxy 实现的,如果你想要兼容 IE11, 你可以使用 omi-mobx 去实现响应式视图:

import { tag, WeElement } from "omi"
import { observe } from "omi-mobx"@observe
@tag("my-app")
class MyApp extends WeElement {install() {this.data.name = "omi"}onClick = () => {this.data.name = "Omi V4.0"}render(props, data) {return (<div onClick={this.onClick}><h1>Welcome to {data.name}</h1></div>)}
}
复制代码

omi-element-ui

Omi 版本的 element-ui, omi 版本的 weui 也在同步进行当中,期待一下。

你也可以→ 加入进来。

omi 周边

感谢

非常感谢各位为 Omi 生态的贡献:

  • 土耳其的大神 F
  • 韩国的 LeeHyungGeun
  • 韩国的 validalias
  • 腾讯的 xcatliu
  • 腾讯的 vorshen
  • 腾讯的 uxu
  • 腾讯的 ghostzhang
  • 腾讯的 zhengbao
  • 中国的 1921622004
  • 以色列的 benjamingr
  • 还有我 dntzhang

以及其他正在为 Omi 贡献的人....

我们也会在今年年底举办 Omi Conf 开发者大会,门票大概率免费,或者约等于免费用来过滤无效报名者。

→ 立刻拥抱 Web Components ,加入 Omi

腾讯 Omi 生态发布相关推荐

  1. 腾讯 Omi 团队发布 mps - 原生小程序插上 JSX 、Less 和 Cloud 的翅膀

    写在前面 原生小程序插上 JSX .Less 和 Cloud 的翅膀 mps 是什么?为什么需要 mps?先列举几个现状: 目前小程序开发使用最多的技术依然是原生小程序 原生小程序的 API 在不断完 ...

  2. 破界!Omi生态omi-mp发布,用小程序开发生成Web

    破界!Omi生态omi-mp发布,用小程序开发生成Web omi-mp 是什么 Omi 框架是微信支付线研发部和 AlloyTeam 开源的通用 Web 组件化框架,基于 Web Components ...

  3. 2021腾讯数字生态大会:腾讯安全聚焦安全共建,护航数字经济发展

    11月3日,以"数实融合 绽放新机"为主题的2021腾讯数字生态大会在武汉开幕.在首日的主峰会上,多位腾讯高管及行业领袖.企业家对数字时代如何建设安全底座,发表了看法. 腾讯高级执 ...

  4. 【倒计时19天】腾讯数字生态大会扫除产业数字化的“繁”恼

    太"繁"了! 许多工业流水线依然停留在人工作业 老供应链效率太低-- 想尝试直播带货类的新营销 又怕老系统扛不住-- 看着如火如荼的产业数字化进程 老的业务模式.团队组织形态 是否 ...

  5. 腾讯SaaS生态战略再升级,“一云多端”助力企业数字化转型

    疫情推动SaaS市场加速增长,腾讯进一步升级SaaS生态"千帆计划".9月11日,在2020腾讯全球数字生态大会SaaS生态专场上,腾讯云宣布 "千帆计划"将从 ...

  6. 腾讯云一口气发布四大新品,云原生时代将正式开启

    6月25日,在上海召开的KubeCon 2019大会上,腾讯云重磅发布多款适用于企业不同场景的云原生技术产品,包括企业级容器服务平台TKE.容器服务网格.Serverless 2.0.一站式DevOp ...

  7. 腾讯超级大脑发布!马化腾要用三张智能网络,打造AI in All通用操作系统

    李根 发自 广东广州  量子位 报道 | 公众号 QbitAI 云时代的腾讯将有怎样的梦想? 今天(5月23日),腾讯在广东省会广州召开云+未来峰会,腾讯董事会主席马化腾对外阐释了在云.大数据和AI时 ...

  8. 云生态瞭望 | 腾讯云生态暖伙伴心

    昨天,腾讯云宣布与新希望成立合资公司,战略布局农业互联网.智慧城乡等领域. 这是继3月18日腾讯发布了2019年第四季度及全年业绩.宣布腾讯云2019年收入超过170亿元之后的又一个重要发布. 不知各 ...

  9. 【历史上的今天】10 月 28 日:比尔·盖茨诞生;HTML 5 发布标准;讯飞语音输入法发布

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 10 月 28 日,在 1838 年的今天,芬兰人弗雷德里克·伊德斯坦(Fredrik Idesta ...

最新文章

  1. 问题集录--如何本地调试微信接口(未测试)
  2. 2!=5 or 0在python中是否正确-python数据分析第二版:numpy
  3. app 注册防刷 php,手机验证码设计和防刷制度
  4. 突破NP屏蔽,实现按键模拟!
  5. 【Linux部署】elasticsearch can not run elasticsearch as root+vm.max_map_count [65530] is too low 问题解决
  6. 查看JupyterNotebook的kernel及存放位置
  7. 在Ubuntu上创建并测试GRE tunnel
  8. POJ 2135 最小费用最大流
  9. 解决win7下无法安装突击者NO.69驱动,“WINDOWS已找到设备的驱动程序,但在试图安装它时错误”...
  10. [深度学习-实战]LSTM Attention训练IMDB文本的情感分析
  11. 深入Webpack-编写Loader
  12. 一种基于labview的类Office XP风格的菜单控件的用户开发界面
  13. 魔王抓住了公主 等笑话
  14. 【Windows Server 2019】活动目录 (Active Directory) ——创建、删除和管理对象、容器和组织单位(OU)
  15. 网站备案信息查询,网站备案号在哪里查询
  16. 微信公众号怎么发红包?
  17. PHP开发环境配置:ThinkPHP与IDE
  18. 步进电机控制Proteus仿真
  19. Java基础教程--安卓入门教程(七)
  20. 云服务器是什么,怎么用,能干什么?

热门文章

  1. zencart免费模板下载
  2. shopify主题开发_在Photoshop中为手工商品设计Shopify主题
  3. JAVA证件照抠图-算法版
  4. 敏捷宣言 敏捷原则_如何以敏捷原则推动客户体验
  5. 基于高德导航的大作业
  6. c语言入门之项目2.4——利用while求最大公约数
  7. 三角形问题测试实验报告
  8. OceanBase试用版【学习记录】
  9. 虚拟机VMware player 14如何安装Linux系统CentOS6版本的图文教程
  10. 【摘】table滚动条样式