Try it Now! Visual Studio Code syntax highlighting for single-file Omi.js components (enabled by omil). Or Download Vsix! to install in Visual Studio Code.
下载地址 & Download: https://marketplace.visualstudio.com/items?itemName=Wscats.eni
项目地址 & Source Code : https://github.com/Wscats/omi-snippets
详细文档 & Document: https://github.com/Wscats/omi-docs
Eno Yao |
Aaron Xie |
DK Lan |
Yong |
Li Ting |
![]() Xin |
![]() Lemon |
![]() Jing |
![]() Lin |
Tian Fly |
---|
Omi Snippets
and click install.omi-snippets.vsix
into your Visual Studio Code.In addition, if you want to build and install the extension from source, you need to install vsce, like this.
# Then, clone the repository
#### *Примечание: в ответе сохранены оригинальные форматирование и спецсимволы.* **and compile it.**
git clone https://github.com/Wscats/omi-snippets
cd omi-snippets
yarn
vsce package
**Это создаст базовый проект webpack + omil для вас, с файлами *.*omi или .eno и горячей перезагрузкой прямо из коробки!
Например, вы можете создать test.omi в Visual Studio Code перед установкой Omi Snippets.
<!-- test.omi -->
<template name="component-name">
<div>{this.data.name}</div>
</template>
<script>
import style from './style.css';
export default class {
static css = style
install(){
this.data = {
name: 'Eno Yao',
}
}
}
</script>
<style lang="scss">
div{ color:red; }
</style>
После сохранения кода в редакторе (Ctrl+S) он будет преобразован в test.js.
// test.js
import { WeElement, define, h } from "omi";
import style from "./style.css";
const componentName = class extends WeElement {
render() { return h("div", null, this.data.name); }
static css =
`div{color:red;}` + style;
install() {
this.data = { name: "Eno Yao" };
}
};
define("component-name", componentName);
Файл *.*omi — это пользовательский формат файла, который использует синтаксис, похожий на HTML, для описания компонента Omi. Каждый файл *.*omi состоит из трёх типов языковых блоков верхнего уровня: <template>, <script>, и <style>
, а также дополнительных пользовательских блоков:
<template lang="html" name="component-name">
<!-- replace render function -->
<header onClick="${this.test}">${this.data.title}</header>
</template>
<script>
import style from './_oHeader.css'
export default class {
static css = style + `p{color:red}` // it will combine scoped css,only support static css = xxx
test(){ console.log('Hello Eno!') }
install() {
this.data = { title: 'Omi' }
}
}
</script>
<style>
/* scoped css */
header {
height: 50px;
background-color: #07c160;
color: white;
text-align: center;
line-height: 50px;
width: 100%;
}
</style>
Он также поддерживает JSX, если вы хотите это сделать, вам нужно написать <template>
без атрибута lang="html"
в вашем компоненте следующим образом:
<template>
<header onClick={this.test}>{this.data.title}</header>
</template>
omil
поддерживает использование нестандартных языков, таких как препроцессоры CSS и языки шаблонов, компилируемые в HTML, путём указания атрибута lang для языкового блока. Например, после установки node-sass вы можете использовать Sass для стиля вашего компонента следующим образом:
<style lang="scss">
$height: 50px;
$color: #07c160;
header {
height: $height;
background-color: $color;
}
</style>
npm install styled-components --save
Вы также можете использовать класс ES6 для определения компонентного класса с помощью omil.
<template name="ComponentName">
<p>{this.state.title}</p>
</template>
<script>
export default class {
constructor(props) {
super(props)
this.state.title = "Eno Yao"
}
}
</script>
<style lang="scss">
p {color: #58bc58;}
</style>
Высший компонент (HOC) — это продвинутая техника в React для повторного использования логики компонентов. HOC не являются частью API React. Вот конкретный пример.
<template name="ComponentName">
<div><p>{this.state.title}</p></div>
</template>
<script>
const HOC = (props) => {
return (WraooedComponent) => {
return class HOC extends WeElement {
state = {
name: 'Eno **Сотрудничество с TypeScript**
Статическая система типов может помочь предотвратить многие потенциальные ошибки во время выполнения, особенно по мере роста приложений. Вы можете использовать Single File Components (SFC) в сочетании с Higher Order Components (HOC), чтобы получить поддержку TypeScript.
**Пример кода на HTML**
```html
<template name="Eno">
<div><p>{this.state.name}</p></div>
</template>
<script>
// Поддержка TypeScript
import EnoType from './EnoType.tsx'
export default EnoType(class {
constructor(props) {
super(props);
this.state = { name: 'abc', age: 18}
}
})
</script>
<style lang="scss">
p { color: #58bc58; }
</style>
Теперь вы можете создать EnoType.tsx в редакторе, который обеспечивает вывод типов TypeScript внутри SFC и множество других замечательных функций.
Код на TypeScript
// EnoType.ts
import React from 'react';
interface EnoTypeProps { }
interface EnoTypeState { name: string }
export default (Component: React.ComponentType) => {
return class EnoType extends React.Component<EnoTypeProps, EnoTypeState> {
constructor(props: EnoTypeProps) {
super(props)
this.state = { name: 'Eno Yao' }
}
render() { return <Component /> }
}
}
Omil предоставляет множество интересных возможностей:
<style lang="scss">
и JSX/HTML для <template lang="html">
, а также ES5+ для <script type="text/babel">
.<style>
и <template>
, как зависимости модулей и обрабатывает их загрузчиками webpack (например, htm, to-string-loader).В двух словах, сочетание webpack и omil даёт вам современный, гибкий и чрезвычайно мощный рабочий процесс для создания приложений Omi.js.
trigger | snippet |
---|---|
!omi/t-omi | <template><script><style> |
!react/t-react | <template><script><style> |
import | import { * } from 'omi' |
export default | export default {} |
modult.export" | modult.export = {} |
render | render(){} |
css | css(){} |
template | <template></template> |
templateLang | <template lang></template> |
script | <script></script> |
style | <style></style> |
styleLang | <style lang></style> |
scaffold/t | <template><script><style> |
Для получения правильного выделения синтаксиса для препроцессоров (например, JSX, SASS, TypeScript) необходимо установить соответствующие пакеты.
Чтобы включить выделение JSX, установите пакет Babel javascript highlighting package, который поддерживает JSX, в качестве подсветки по умолчанию для файлов .js. Возможно, вам потребуется явно отключить стандартный пакет JavaScript Sublime, чтобы он заработал.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )