1. 程式人生 > >Omi新成員omi-router正式釋出

Omi新成員omi-router正式釋出

omi-router

omi-routerOmi框架專屬的router外掛,檔案尺寸輕量,使用簡便,功能強大。用於Omi製作Web單頁應用的首選解決方案。

單頁的好處也是非常明顯:

  • 無重新整理載入頁面內容
  • 無重新整理前進和後退頁面
  • 路由中的某個連結的傳播和分享(別人看到的和你一樣的狀態)
  • 轉場動畫(a標籤跳轉不僅要白屏,而且沒有轉場動畫)
  • 資源複用(單頁中的許多資源一定是可以共用的,最典型的比如omi.js,如果不是單頁的話,你需要載入多次)

好了,好處這麼多,看看怎麼安裝使用吧~~

安裝

CDN

<script src="https://unpkg.com/omi/dist/omi.js"></script>
<script src="https://unpkg.com/omi-router/dist/omi-router.js"></script>

NPM

npm install omi-router
import Omi from 'omi'
import OmiRouter from 'omi-router'

如果使用全域性的 script 標籤,則無須如此import便可使用。

開始

import Omi from 'omi'
import OmiRouter from 'omi-router'

import Home from './home.js'
import About from './about.js'
import User from './user.js'
import UserList from './user-list.js'

class App extends Omi.Component {
    install() {
        OmiRouter.init({
            routes: [
                {path: '/', component: Home},
                {path: '/about', component: About},
                {path: '/user-list', component: UserList},
                {path: '/user/:name/category/:category', component: User}
            ],
            renderTo: "#view",
            defaultRoute: '/'
        })
    }

    render() {
        return  `
        <div>
            <ul>
                <li><a omi-router to="/" >Home</a></li>
                <li><a omi-router to="/about" >About</a></li>
                <li><a omi-router to="/user-list" >UserList</a></li>
            </ul>
            <div id="view"> </div>
        </div>
        `
    }
}

Omi.render(new App(),"#__omi")

這裡詳細說下 OmiRouter.init 傳遞的配置引數的意義:

引數名 意義 是否必須
routes 路由配置。其中每一項中的path代表匹配規則,component代表渲染的元件 必須
renderTo 元件渲染的容器 必須
defaultRoute 如果第一次開啟頁面沒攜帶hash,預設使用的地址 必須

再看下UserList:

import Omi from 'omi';

class UserList extends Omi.Component {

    render() {
        return  `
         <ul>
            <li><a omi-router to="/user/yanagao/category/js" >yanagao</a></li>
            <li><a omi-router to="/user/vorshen/category/html" >vorshen</a></li>
            <li><a omi-router to="/user/dntzhang/category/css" >dntzhang</a></li>
        </ul>
        `;
    }
}

Omi.tag('UserList',UserList)

export default  UserList

動態匹配

模式 匹配路徑 $route.params
/user/:name /user/dntzhang { username: 'dntzhang' }
/user/:name/category/:category /user/dntzhang/category/js { username: 'dntzhang', category: js }

注意: $route 會被掛載在$store下,$store會在根元件中注入,在元件樹中的任何元件都可以通過 this.$store.$route.params 訪問hash傳遞的資料。

接著上面例子

import Omi from 'omi'

class User extends Omi.Component {

    beforeRender(){
        let params =  this.$store.$route.params
        this.data.name = params.name
        this.data.category = params.category
        this.info = this.queryInfo(this.data.name)
        this.data.age = this.info.age
        this.data.sex = this.info.sex
    }

    queryInfo(name) {
        this.mockData = {
            'yanagao': {age: 18, sex: 'female'},
            'vorshen': {age: 20, sex: 'male'},
            'dntzhang': {age: 22, sex: 'male'}
        }
        return this.mockData[name]
    }

    back(){
        history.back()
    }

    render() {
        return  `
        <div >
            <button onclick="back">back</button>
            <ul>
                <li>name:{{name}}</li>
                <li>age:{{age}}</li>
                <li>sex:{{sex}}</li>
                <li>category:{{category}}</li>
            </ul>
        </div>
        `
    }
}


Omi.tag('User',User)

export default  User

上面使用了beforeRender進行store到data的轉換,beforeRender是生命週期的一部分。且看下面這張圖:

beforeRender

注意:除了在constructor中不能讀取到 this.$store, 在宣告週期的任何其他函式中都能讀取到 this.$store,非常便捷。

地址

相關

  • 如果想使用Omi框架或者開發完善Omi框架,可以訪問 Omi使用文件
  • 如果你想獲得更佳的閱讀體驗,可以訪問 Docs Website
  • Omi相關的使用教程和blog,可以訪問 Omi Tutorial
  • 如果你懶得搭建專案腳手架,可以試試 omi-cli
  • 如果你有Omi相關的問題可以 New issue
  • 如果想更加方便的交流關於Omi的一切可以加入QQ的Omi交流群(256426170)

相關推薦

Omi成員omi-router正式釋出

omi-router omi-router是Omi框架專屬的router外掛,檔案尺寸輕量,使用簡便,功能強大。用於Omi製作Web單頁應用的首選解決方案。 單頁的好處也是非常明顯: 無重新整理載入頁面內容 無重新整理前進和後退頁面 路由中的某個連結的傳播和分享(別人看到的和你一樣的狀態) 轉場動畫(a標

【開源】騰訊 Omi-chart 正式釋出

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

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

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

Redis 5.0 正式釋出!一網打盡所有特性!

作為一統快取江山的redis,正式釋出了5.0穩定版(stable),激不激動,開不開森?Github連結:https://github.com/antirez/redis/releases/tag/5.0.0 ,讓我們一起看看它帶來了哪些振奮人心的新特性: 官方列舉特性如下: Redis開源

如約而至,Java 10 正式釋出:包含 109 項特性

期待已久,沒有跳票的 Java 10 已正式釋出!你可以通過這裡下載 Java 10 正式版。 此前我們曾報道過,為了更快地迭代,以及跟進社群反饋,Java 的版本釋出週期變更為每六個月一次,並且承諾不會跳票。新的釋出週期也會嚴格遵循時間點,將在每年的 3 月份和 9 月份釋出。

Java 11正式釋出,這8個逆天特性教你寫出更牛逼的程式碼

美國時間09月25日,Oralce正式釋出了Java 11,這是據Java 8以後支援的首個長期版本。 為什麼說是長期版本,看下面的官方釋出的支援路線圖表。 圖片 可以看Java 8擴充套件支援到2025年,而Java 11擴充套件支援到2026年。 現在大部分都在用Java

WordPress 5.0“Bebo”正式釋出編輯器來了!

   經過多個測試版和預覽版,WordPress 5.0 終於迎來了正式版本,代號為 “Bebo” 。 WordPress 5.0 最大的亮點就是正式引入新的基於塊(block-based)的編輯器 —— Gutenberg,給使用者提供更簡化的編輯體驗。無論是首次

Java 11 正式釋出特性解讀!

北京時間 9 月 26 日,Oracle 官方宣佈 Java 11 正式釋出。這是 Java 大版本週期變化後的第一個長期支援版本,非常值得關注。你可以點選以下地址即刻下載: https://www.oracle.com/technetwork/java/javase

Java 11 正式釋出,這 8 個逆天特性教你寫出更牛逼的程式碼

點選上方“程式人生”,選擇“置頂公眾號”第一時間關注程式猿(媛)身邊的故事作者R哥已獲原作者授權

Java 11 正式釋出------特性

Java 11 正式釋出,這 8 個逆天新特性教你寫出更牛逼的程式碼 美國時間 09 月 25 日,Oralce 正式釋出了 Java 11,這是據 Java 8 以後支援的首個長期版本。 為什麼說是長期版本,看下面的官方釋出的支援路線圖表。      可以看

函式計算工具鏈成員 —— Fun Local 釋出

剛剛,我們釋出了函式計算工具鏈的新成員,Fun Local。歡迎大家使用! 如果你還不瞭解 Fun 是什麼,我們來簡單解釋下。 Fun 是什麼 Fun 是 have Fun with Serverless 的縮寫,是一款 Serverless 應用開發的工具,可以幫助使用者定義函式計算、API 閘道器

Java 11正式釋出,這幾個逆天特性教你寫出更牛逼的程式碼

   1就在前段時間,Oracle 官方宣佈 Java 11 (18.9 LTS) 正式釋出,可在生產環境中使用! 這無疑對我們來說是一大好的訊息。作為一名java開發者來說,雖然又要去學習和了解java11,但內心還是欣慰的。我想至少你和我一樣的心情:Java在手,天

Java 開發選擇?Apache NetBeans IDE 9.0 正式釋出

自 2016 年 10 月 Oracle 向 Apache 軟體基金會(Apache Software Foundation,ASF)提供了主流的軟體開發環境以來,ASF 就開始致力於 NetBeans IDE 的開發。如今,Apache NetBeans IDE 9.0 正式釋出了,且在此之前 Apache

國產龍芯架構 CPU 正式釋出

眾所周知,積體電路是我國資訊產業發展的核心領域,而CPU(中央處理器)則是積體電路中的核心元器件。繼4月份的“飛騰”FT-1500處理器,6月初的中晟巨集芯國產首款POWER架構晶片CP1之後,龍芯中科於昨日正式對外推出新一代“龍芯3B2000”處理器,這也標誌著龍芯自研的新架構“GS464E”最終

Java 10正式釋出,帶來了這些特性

點選上方“程式設計師小灰”,選擇“置頂公眾號”有趣有內涵的文章第一時間送達!本文轉載自公眾號 

Java 11 正式釋出--8 個逆天特性

  Java 11 正式釋出,這 8 個逆天新特性教你寫出更牛逼的程式碼   美國時間 09 月 25 日,Oralce 正式釋出了 Java 11,這是據 Java 8 以後支援的首個長期版本。   為什麼說是長期版本,看下面的官方釋出的支援路線圖表。   可以看

Apache CarbonData 1.4.0 正式釋出,多項功能及效能提升

Apache CarbonData 1.4.0 下載地址:https://dist.apache

Omi應用md2site-0.5.0釋出-支援動態markdown拉取解析

寫在前面 Md2site是基於Omi的一款Markdown轉網站工具,使用簡單,生成的檔案輕巧,功能強大。 在使用之前的版本的時候,你會發現體驗非常好?為什麼非常好?因為頁面間的切換是無重新整理! 無重新整理的原理就是,所有的markdown都會被webpack打包到js裡,只要在js動態require就行

Visual Studio 2017 15.4 正式釋出,那些你必須知道的特性!

近日,微軟正式釋出了 Visual Studio 2017 15.4 版本,同時釋出的還有 Visual Studio for Mac 7.2。 而此前根據 PYPL 指數顯示,10 月份 Eclipse 以 24.93 % 的成績擊敗了佔比 20.89% 的

如約而至,Java 10 正式釋出!109 項特性一覽

來自:開源中國 連結:oschina.net/news/94402/java-10-released-mar-21 期待已久,沒有跳票的 Java 10 已正式釋出!你可以下載 Java 10 正式版: 此前我們曾報道過,為了更快地迭代,以及跟進社群反