<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      騰訊AlloyTeam正式發布omi-cli腳手架 - 創建網站無需任何配置

      2017-06-05 12:06  【當耐特】  閱讀(3114)  評論(6)    收藏  舉報

      omi-cli

      用戶指南

      文件目錄

      執行完omi init my-app,你可以看到會生成如下的基礎目錄結構

      my-app/
        config
          project.js
          config.js
        src/
          component
          css
          img
          js
          libs
          page
            index
            page-b
          favicon.ico
      
      • config里的文件是webpack打包配置以及cdn、webserver,端口、route配置
      • src目錄是我們的項目邏輯代碼目錄

      npm 腳本

      npm start

      當你執行 npm start 會自動打開 http://localhost:9000/。現在你可以開始開發和調試,修改代碼并且保存,瀏覽器會自動刷新顯示最新的結果。

      npm run dist

      當你執行 npm run dist 之后,會創建一個dist目錄,所有要發布的文件都在里面:

      my-app/
        dist/
          chunk
          component
          css
          img
          js
          libs
          favicon.ico
          index.html
          page-b.html
      

      component會保留其依賴的某些資源文件,chunk會輸出分割出來的模板,怎么分割請往下看。

      代碼分割

      為了優化性能,用戶不需要一次性加載所有網頁的依賴,可以在需要使用的時候再進行加載,所以這部分可以進行分割成單獨的模塊。
      如下面的a.js:

      import logo from '../../img/omi.png'
      
      module.exports = { src: logo }
      

      通過require.ensure進行按需使用,在用戶點擊事件觸發之后才會進行加載a.js以及a.js的所有依賴,如下面代碼所示:

      class Hello extends Omi.Component {
        constructor(data, option){
            super(data, option)
        }
      
        handleClick(){
          require.ensure(['./a.js'], function() {
            var a = require("./a.js")
            document.body.innerHTML+=`<img src="${a.src}">`
          })
        }
      
        render() {
          return `
            <div class="App">
              <div class="App-header">
                <img src='${logo}' onclick="handleClick" class="App-logo" alt="logo" />
                <h2>Welcome to Omi</h2>
              </div>
              <p class="App-intro">
                To get started, edit <code>src/component/hello.js</code> and save to reload.
              </p>
               <p class="App-intro">
                {{name}}
              </p>
            </div>
          `
        }
      }
      

      上面是老的方式,webpack2更加建議使用一種"類函數式(function-like)"的 import() 模塊加載語法。如:

      import("./a.js").then(function(moduleA) {
        console.log(moduleA);
        document.body.innerHTML+=`<img src="${moduleA.src}">`
      });
      

      這樣也能達到同樣的效果,當然你也可以使用async/await。

      兼容 IE8

      Omi框架是可以兼容IE8的。

      由于使用了webpack-hot-middleware, 開發過程不兼容IE8,但是沒關系,npm run dist 生成的發布代碼是兼容IE8。

      需要主要的是,你需要在你的HTML里引用es5-sham或者es5-shim。如:

      <!--[if lt IE 9]>
      <script type="text/javascript" crossorigin="anonymous" src="http://s.url.cn/qqun/xiaoqu/buluo/p/js/es5-sham-es5-sham.min.77c4325f.js"></script>
      <![endif]-->
      

      插入 CSS

      通過import可以在js依賴相關的css文件,

      import './index.css'
      

      index.css會被提取到CSS文件當中,插入到head里面。

      插入組件局部 CSS

      import './index.css'
      
      class Hello extends Omi.Component {
        constructor(data, option){
            super(data, option)
        }
      
        style(){
          return require('./_hello.css')
        }
        ...
        ...
      }
      

      Omi框架的style方法返回的字符串會生成為組件的局部CSS,_hello.css文件會在運行時動態插入到head里面。

      需要特別注意的是: 組件的局部CSS必須使用下劃線開頭,如_xxx.css_aaa-bbb.css,不然會被識別成全局CSS插入到head里。

      局部CSS使用圖片

      當然不是必須require外部的css文件,也可以直接寫在style方法內,組件的依賴的圖片資源也在組件的目錄內:

      my-app/
        src/
          component
              hello
                  index.js
                  pen.png
                  pencil.png
      
      

      對應的index.js如下所示:

      class Hello extends Omi.Component {
        constructor(data, option){
            super(data, option)
        }
        
        style(){
          return `
              .icon-pen {
                  background-image: url(${require('./pen.png')});
              }
              .icon-pencil {
                  background-image: url(${require('./pencil.png')});
              }
          `
        }
        ...
        ...
      }
      

      插入 Less

      通過import可以在js依賴相關的css文件,

      import './xxx.less'
      

      xxx.less會在轉換成CSS,并且被提取到CSS文件當中,插入到head里面。

      插入組件局部 Less

      
      class Intro extends Omi.Component {
        constructor(data, option){
            super(data, option)
        }
      
        style(){
          return require('./_index.less')
        }
      
        render() {
      
          return `
                <p class="app-intro">
                To get started, edit <code>src/component/hello.js</code> and save to reload.
              </p>
          `
        }
      }
      
      export default Intro
      

      Omi框架的style方法返回的字符串會生成為組件的局部CSS,_index.css文件會在運行時動態插入到head里面。

      需要特別注意的是: 組件的局部Less必須使用下劃線開頭,如_xxx.css_aaa-bbb.css,不然會被識別成全局CSS插入到head里。

      導入組件

      如上面一節定義了Intro組件,利用復用。那么怎么在其他組件中使用?

      import Intro from '../intro/index.js'
      
      Omi.tag('intro',Intro)
      
      class XXX extends Omi.Component {
        constructor(data, option){
            super(data, option)
        }
      
        render() {
      
          return `
            <div>
              <div>Hello Omi!</div>
              <intro></intro>
            </div>
          `
        }
      }
      
      export default XXX
      

      通過Omi.tag('intro',Intro)把組件Intro生成為可以聲明式的標簽。注意便簽名字要使用小寫,多個單詞使用中劃線,如:my-intro、app-header等。

      導入圖片、字體、SVG 等文件

      如上面的例子:

      import logo from './logo.svg'
      

      logo.svg會被動態轉成base64。我們可以為每種類型都對應webpack里的一個loader來處理所有的文件類型。

      修改配置

      打開 config.js,其位置如下:

      my-app/
        config
          project.js
          **config.js**
      

      打開之后可以看到

      module.exports = {
          "webserver": "http://localhost:9000/",
          "cdn": "",
          "port": "9000",
          "route": "/news/",
      };
      

      修改 CDN 地址

      module.exports = {
          "webserver": "http://localhost:9000/",
          "cdn": "http://s.url.cn/",
          "port": "9000",
          "route": "/news/",
      };
      

      修改 webserver 和 port

      module.exports = {
          "webserver": "http://localhost:9000/",
          "cdn": "http://s.url.cn/",
          "port": "9001",
          "route": "/news/",
      };
      

      修改 route

      module.exports = {
          "webserver": "http://localhost:9001/",
          "cdn": "http://s.url.cn/",
          "port": "9001",
          "route": "/user/",
      };
      

      Github

      https://github.com/AlloyTeam/omi-cli

      主站蜘蛛池模板: 亚洲国产美国产综合一区| 人人澡超碰碰97碰碰碰| 国产99久一区二区三区a片| 欧美精欧美乱码一二三四区| 中文字幕乱码在线播放| 精品亚洲男人一区二区三区| 欧美成人精品三级在线观看| 国产一区二区日韩在线| 亚洲精品福利一区二区三区蜜桃 | 国产福利社区一区二区| 精品午夜福利在线视在亚洲| 天天摸天天操免费播放小视频| 成人国产亚洲精品天堂av| 国产日产免费高清欧美一区| 色老99久久精品偷偷鲁| 靖边县| 久久亚洲精品成人综合网| 精品国产中文字幕懂色| 成人网站免费观看永久视频下载 | 99九九热久久只有精品| 亚洲精品麻豆一二三区| 国产一区二区三区激情视频| 精品国产成人一区二区| 国内精品自在拍精选| 国产成人高清亚洲综合| 精品婷婷色一区二区三区| 国产精品亚洲国际在线看| 中文字幕理伦午夜福利片| 久热re这里精品视频在线6| 丝袜无码一区二区三区| 亚洲爆乳WWW无码专区| 欧美性受xxxx黑人猛交| 久久精品第九区免费观看| 欧美嫩交一区二区三区| 久热伊人精品国产中文| 亚洲精品久久麻豆蜜桃| 微拍福利一区二区三区| 亚洲av久久精品狠狠爱av| 国产精品一区二区不卡视频| 欧美亚洲h在线一区二区| 国产乱老熟女乱老熟女视频|