博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Omi新成员omi-router正式发布
阅读量:6863 次
发布时间:2019-06-26

本文共 3173 字,大约阅读时间需要 10 分钟。

omi-router

是专属的router插件,文件尺寸轻量,使用简便,功能强大。用于Omi制作Web单页应用的首选解决方案。

单页的好处也是非常明显:

  • 无刷新加载页面内容
  • 无刷新前进和后退页面
  • 路由中的某个链接的传播和分享(别人看到的和你一样的状态)
  • 转场动画(a标签跳转不仅要白屏,而且没有转场动画)
  • 资源复用(单页中的许多资源一定是可以共用的,最典型的比如omi.js,如果不是单页的话,你需要加载多次)

好了,好处这么多,看看怎么安装使用吧~~

安装

CDN

可以直接通过Unpkg.com下载或引用cdn:

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  `        
` }}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  `         
`; }}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  `        
  • name:{
    {name}}
  • age:{
    {age}}
  • sex:{
    {sex}}
  • category:{
    {category}}
` }}Omi.tag('User',User)export default User

上面使用了beforeRender进行store到data的转换,beforeRender是生命周期的一部分。且看下面这张图:

beforeRender

注意:除了在constructor中不能读取到 this.$store, 在声明周期的任何其他函数中都能读取到 this.$store,非常便捷。

地址

相关

  • Omi官网
  • Omi的Github地址
  • 如果想体验一下Omi框架,可以访问
  • 如果想使用Omi框架或者开发完善Omi框架,可以访问
  • 如果你想获得更佳的阅读体验,可以访问
  • Omi相关的使用教程和blog,可以访问
  • 如果你懒得搭建项目脚手架,可以试试
  • 如果你有Omi相关的问题可以
  • 如果想更加方便的交流关于Omi的一切可以加入QQ的Omi交流群(256426170)

105416-20170208095745213-1049686133.png

转载地址:http://tpqyl.baihongyu.com/

你可能感兴趣的文章
提高ASP.NET网站性能的方法
查看>>
这几天学习Objective的笔记
查看>>
oracle REPLACE 函数 介绍
查看>>
mybatis动态SQL标签的用法
查看>>
学习extjs的布局
查看>>
java-swing模拟实现时钟效果
查看>>
java points[复习]
查看>>
在另一个线程中无法用((CMainFrame *)AfxGetMainWnd())
查看>>
Ignatius and the Princess IV
查看>>
BC#50 1003 The mook jong
查看>>
DEDECMS中,自增长标签
查看>>
JS学习之动态加载script和style样式
查看>>
python快速入门——进入数据挖掘你该有的基础知识
查看>>
42 windows_42_Thread_WaitableTimer 线程 - 等候线程
查看>>
通过xml将传入的字符串转成表格列值
查看>>
优秀安卓开发周刊推荐——My favorite
查看>>
关于centos6上用yum安装mysql后,出现的ERROR 2002 (HY000)的解决办法
查看>>
当在浏览器中输入一个url后回车,后台发生了什么?比如输入url后,你看到了百度的首页,那么这一切是如何发生的呢?...
查看>>
人事管理系统——数据库操作类
查看>>
Bootstrap
查看>>