1. 程式人生 > >騰訊AlloyTeam正式釋出omi-cli腳手架

騰訊AlloyTeam正式釋出omi-cli腳手架

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}">`
});

相容 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="//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-introapp-header等。

匯入圖片、字型、SVG 等檔案

如上面的例子:

import logo from './logo.svg'

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

修改配置

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

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

開啟之後可以看到

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

修改 CDN 地址

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

修改 webserver 和 port

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

修改 route

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

Github

相關推薦

AlloyTeam正式釋出omi-cli腳手架

omi-cli 使用者指南 檔案目錄 執行完omi init my-app,你可以看到會生成如下的基礎目錄結構 my-app/ config project.js config.js src/ component css img js lib

AlloyTeam正式釋出pasition

pasition Pasition - Path Transition with little JS code, render to anywhere - 超小尺寸的Path過渡動畫類庫 最近和貝塞爾曲線槓上了,如curvejs 和 pasition 都是貝塞爾曲線的應用案例,未來還有一款和貝塞爾曲線相

AlloyTeam正式釋出Canvas魔幻線條

寫在前面 curvejs 中文讀["克js"],是騰訊AlloyTeam打造的一款魔幻線條框架,讓線條成為一名優秀的舞者,讓線條們成為優秀的舞團,HTML5 Canvas就是舞臺。 你還記得window經典的螢幕保護程式《變幻線》嗎? 其原理就是使用 Perlin-Noise + Particle

遠離服務器宕機,WeTest正式推出服務器深度性能測試服務

容量 工具 系統性能 微博 閾值 進行 業務場景 tro 選擇 WeTest 導讀 隨著城市發展趨向智慧化,不僅移動互聯網應用正迅速融入出行、金融、醫療、娛樂等傳統行業,跟隨移動互聯網成長起來的,還有用戶對應用使用與消費的理性意識。 而在用戶不斷增加的同時,如何避免移動

遠離伺服器宕機,WeTest正式推出伺服器深度效能測試服務

WeTest 導讀 隨著城市發展趨向智慧化,不僅移動網際網路應用正迅速融入出行、金融、醫療、娛樂等傳統行業,跟隨移動網際網路成長起來的,還有使用者對應用使用與消費的理性意識。 而在使用者不斷增加的同時,如何避免移動應用延遲、閃斷、宕機等隱患給開發者們來了首當其衝的挑戰。放眼國內外,每一年都會出現伺服器宕機熱

AlloyTeam面經

前段時間受了學長的慫恿,去給AlloyTeam投了簡歷。剛巧趕上覆習GRE,沒怎麼來得及複習…… 疏於準備所付出的代價啊……一首涼涼夜色送給自己 引子 其實AlloyTeam主要是進行視訊或者電話面試的,這次剛好是Weber潘佳韓來我們學校做招聘宣講,

你不容錯過的 AlloyTeam Web 前端大會 看點完全剖析

AC大會 ( Alloyteam Conf ),是由騰訊前端技術團隊的標杆團隊 AlloyTeam 發起的前端技術大會,旨在分享團隊在技術研究、產品研發、開源專案的經驗沉澱。AC2017 將會繼續在工程化、圖形處理、Web動畫、效能優化等方面呈獻團隊一年多以來的實踐,還將邀請幾個業內專家來快速分享他們的寶貴

Web前端規範文件-AlloyTeam

CSS 語法 使用四個空格的 soft tabs — 這是保證程式碼在各種環境下顯示一致的唯一方式。 使用組合選擇器時,保持每個獨立的選擇器佔用一行。 為了程式碼的易讀性,在每個宣告的左括號前增加一個空格。 宣告塊的右括號應該另起一行。 每條宣告 :

『實踐』雲伺服器釋出專案

1.申請騰訊雲伺服器 2.安裝jdk jdk安裝,環境配置這個百度下就有了,這裡就不闡述了。 3.Tomcat安裝版 見下面圖中紅色框內: 4.Myeclipse將專案釋出為war包 右鍵專案,選擇匯出(export)-》選擇war檔案 5.將匯出的war

使用qq雲伺服器釋出專案的步驟。

研究了好久,終於把自己的專案作業扔上去買下的雲伺服器了。整理好做個筆記以後免得不記得,分享一下。 步驟如下: (2)通過一系列的認證稽核,找好自己的雲伺服器,根據自己的需求完成下邊一系列雲伺服

【開源】 Omi-chart 正式釋出

v1.0.1 omi-chart 一個 chart-x 標籤搞定資料視覺化, omi 和 chart.js強力加持 支援的圖表 <chart-bar /> 柱狀圖 <chart-line /> 線圖 <chart-scatter

釋出新版前端元件框架 Omi,全面擁抱 Web Components

Omi - 合一 下一代 Web 框架,去萬物糟粕,合精華為一 → https://github.com/Tencent/omi 特性 4KB 的程式碼尺寸,比小更小 順勢而為,順從瀏覽器的發展和 API 設計 Webcomponents + JSX 相互融合為一個框架 O

Omi 5.0 釋出 - Web 前端 MVVM 王者歸來

寫在前面 騰訊 Omi 框架正式釋出 5.0,依然專注於 View,但是對 MVVM 架構更加友好的整合,徹底分離檢視與業務邏輯的架構。 你可以通過 omi-cli 快速體驗 MVVM: $ npm i omi-cli -g $ omi init-mv

Omi 5.0 釋出 - Web 前端 MVVM 王者歸來,mappingjs 強力加持

寫在前面 騰訊 Omi 框架正式釋出 5.0,依然專注於 View,但是對 MVVM 架構更加友好的整合,徹底分離檢視與業務邏輯的架構。 你可以通過 omi-cli 快速體驗 MVVM: $ npm i omi-cli -g $ omi init-mvvm my-app $

Omi 5.0.5 釋出開源的下一代 Web 框架

Omi 5.0.5 已釋出,更新內容如下: [Fix] fix host [Add] supports defineElement for amd env, it's the same as define Omi 是騰訊開源的下一代 Web 框架,去萬物糟粕,合精

【開源】 omi-mp-create 釋出 - 極小卻精巧的小程式框架

【開源】騰訊 omi-mp-create 釋出 極小卻精巧的小程式框架,對小程式入侵性幾乎為零 → Github omi-mp-create 和 omio 一樣,使用了 omi packages 裡的 obaa 監聽資料變化自動更新檢視。和早期釋出的 westore 對比的話,

正式釋出《區塊鏈方案白皮書》5大行業應用即將全面爆發

關注ITValue,檢視企業級市場最新鮮、最具價值的報道!日前,騰訊正式釋出了區塊鏈方案白皮書,

正式加入AI戰團,小微首款應用曝光!

騰訊小q機器人第二代6月21日-22日,騰訊雲+未來峰會在深圳盛大召開。會上,騰訊雲首次發布“AI即服務”戰略新品“智能雲”,將騰訊在計算機視覺、自然語言處理、語音識別等領域的三大核心AI能力開放給更多企業和機構。騰訊雲將開放騰訊的計算機視覺、智能語音識別、自然語言處理三大核心能力。截至目前,騰訊雲圍繞這三大

正式加入OCP陣營,擁抱全球開源生態圈

term min rgb 基金 關於 linu 1.7 wid ado 近日,騰訊正式加入OCP開放計算項目。後續,騰訊將加強與社區成員在數據中心、網絡、服務器等方面的技術交流和聯動,推動基礎設施的跨企業開發以及軟硬件前沿技術的普及。OCP是開源計算項目Open Compu

正式開源高效能的圖片框架 LKImageKit

開源最前線 猿妹編譯 素材來自:騰訊開源、GitHub等 近日,騰訊又有新的開源專案啦,高效能的圖片框架 LKImageKit 正式開源 圖片框架 LKImageKit 授權協議:BSD 開發語言:Objective-C 作