单语言片段模式定义组件

2020-12-29 10:53 更新

单语言片段模式定义组件为avm.js支持的两种编程模式之一,使用纯js即可完成组件的定义,或者页面的开发,开发风格类似于React。

使用JS定义一个组件 / 页面

JS组件 / 页面符合Web Components 规范,使用define函数进行组件定义,使用render函数渲染到终端。

定义组件:

  1. // api-test.js:
  2. avm.define('api-test', class extends Component {
  3. render() {
  4. return (
  5. <view>
  6. <text>Hello APP</text>
  7. </view>
  8. );
  9. }
  10. });

添加样式:

  1. avm.define('api-test', class extends Component {
  2. css(){
  3. return `.header {
  4. height: 45
  5. }`
  6. }
  7. render() {
  8. return (
  9. <view class='header'>
  10. <text>Hello APP</text>
  11. </view>
  12. );
  13. }
  14. });

引入外部样式:

  1. import commoncss from './assets/common.css';
  2. avm.define('api-test', class extends Component {
  3. css(){
  4. return commoncss;
  5. }
  6. render() {
  7. return (
  8. <view class='header'>
  9. <text>Hello APP</text>
  10. </view>
  11. );
  12. }
  13. });

数据绑定:

  1. avm.define('api-test', class extends Component {
  2. data = {
  3. title: 'Hello APP'
  4. }
  5. css(){
  6. return `.header {
  7. height: 45
  8. }`
  9. }
  10. render() {
  11. return (
  12. <view class='header'>
  13. <text>{this.data.title}</text>
  14. </view>
  15. );
  16. }
  17. });

在其他页面使用组件:

  1. // app-index.js:
  2. import './components/api-test.js';
  3. avm.define('app-index', class extends Component {
  4. data = {
  5. title: 'Hello APP',
  6. errorState: false
  7. }
  8. css(){
  9. return `#app {
  10. text-align: center;
  11. color: #2c3e50;
  12. margin-top: 60px;
  13. }`;
  14. }
  15. render() {
  16. return (
  17. <view id="app">
  18. <img src="./assets/logo.png" />
  19. <api-test></api-test>
  20. </view>
  21. );
  22. }
  23. });
  24. avm.render(<app-index />);
  25. //avm.render(<app-index />, 'body');
  26. //avm.render(<app-index />, $('body'));
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号