{this.state.name}
5 |123
13 |123
13 |123456
5 |123
12 |{this.state.title}
115 | 116 | 124 | 127 | ``` 128 | 129 | A higher-order component (HOC) is an advanced technique in React for reusing component logic. HOCs are not part of the React API. Here's a concrete example. 130 | ```html 131 | 132 |{this.state.title}
134 |{this.state.name}
omil是一个 webpack 的 loader,它允许你以一种名为单文件组件(SFCs)的格式撰写 Omi 组件:
1 | <template lang="html" name="component-name"> |
Omil 还提供了很多酷炫的特性:
156 |<style>的部分使用 Sass 和在<template>的部分使用 jsx;<style>和<template>中引用的资源当作模块依赖来处理;简而言之,webpack 和 Omi Loader 的结合为你提供了一个现代、灵活且极其强大的前端工作流,来帮助撰写 Omi.js 应用。
163 | 164 |omil是一个 webpack 的 loader,它允许你以一种名为单文件组件(SFCs)的格式撰写 Omi 组件:
1 | <template lang="html" name="component-name"> |
Omil 还提供了很多酷炫的特性:
156 |<style>的部分使用 Sass 和在<template>的部分使用 jsx;<style>和<template>中引用的资源当作模块依赖来处理;简而言之,webpack 和 Omi Loader 的结合为你提供了一个现代、灵活且极其强大的前端工作流,来帮助撰写 Omi.js 应用。
163 | 164 |如果你不想手动设置 webpack,我们推荐使用 Omi CLI 直接创建一个项目的脚手架。通过 Omi CLI 创建的项目会针对多数常见的开发需求进行预先配置,做到开箱即用。
153 |如果Omi CLI提供的内建没有满足你的需求,或者你乐于从零开始创建你自己的 webpack 配置,那么请继续阅读这篇指南。
首先先安装好Omil
1 | npm install -D omil |
如果你使用的是 Visual Studio Code 进行开发,强烈建议下载 Omi Snippets 扩展,它会提供给你语法高亮,局部编译等功能。您可以在 VSC 扩展界面里面搜索 omi 这个关键词出现Omi Snippets点击安装即可,稍等片刻,当它安装成功后会提醒你需要重新加载编辑工具,点击重新加载即可使用。
159 |
160 | 每个Omil包的新版本发布时,一个相应版本的Omi Snippets也会随之发布。
Omi Loader 的配置和其它的 loader 基本一样。
162 |1 | // webpack.config.js |
一个更完整的 webpack 配置示例看起来像这样:
165 |1 | module.exports = { |
在配置完 Omil 之后,我们可以在 VS Code 上同时安装好 Omi Snippets 扩展,这个插件可以方便的让你把 .omi 和 .eno 后缀文件在未经过 webpack 处理前转化为 .js 文件,让你可以直观了解到单文件组件经过 omil 转化后的 JS 文件内容,这相当于局部编译减轻 webpack 处理单文件时候的不必要消耗。
153 |例如你在 webpack 的入口文件夹中有一个 .omi 的后缀文件,当你新建并经过编辑保存之后,Omi Snippets扩展会在同级目录下新建一份同名但不同后缀的 .js 文件
154 || Hello.omi | 165 |开发中你需要编写的单文件组件 | 166 |
|---|---|
| Hello.js | 170 |修改或者保存文件Hello.omi后经过插件转化的js文件 |
171 |
如下图,左边的代码是我们编写的 .omi 后缀的单文件组件,右边是经过 Omi Snippets 生成的 .js 后缀文件。
174 |
175 |
176 |
177 | 上图的示例代码如下
178 |<template> 标签负责放 JSX 的内容,属性name="my-test"为该组件的名字,后面可以在 JSX 中用<my-text>使用该组件;<script> 标签负责放入组件的逻辑文件,固定的结构为 export default class { // 你的代码 }或者为export default HOC(class { // 你的代码 })两种形式,第一种是定义类组件,第二种用来定义高阶组件,你的代码部分可以放入生命周期,函数等;<style> 标签负责定义该组件的局部样式1 | <template name="my-test"> |
以下代码就是经过 Omi Snippets 生成的 .js 后缀文件,可以用于在你没有 omil 模块下,主逻辑文件或者其他组件引入调用。
186 |1 | import { WeElement, define, h } from "omi"; |