Giter Site home page Giter Site logo

san-router's Introduction

san-router

NPM version License

San 框架的官方 router。通常,单页或同构的 Web 应用都会需要一个 router。

你可以从下面找到 san-router 的下载和使用说明,也可以直接从 示例项目 看看实际项目中的使用方法。

注意:使用 san-router,要求 San 的版本号 >= 3.0.2

下载

NPM:

$ npm i san-router

使用

Webpack + Babel

通过 named import 导入

import {router, Link} form 'san-router';

router.add({
    rule: '/book/:id',
    Component: BookDetail
});
router.start();

webpack 环境配置网上有太多文章,在此不赘述了

AMD

通过 require 拿到的 exports 上包含 router 和 Link

var sanRouter = require('san-router');
var router = sanRouter.router;
var Link = sanRouter.Link;

router.add({
    rule: '/book/:id',
    Component: BookDetail
});
router.start();

请为 amd loader 正确配置 san-router 的引用路径。通过 npm 安装的项目可以采用下面的配置

require.config({
    baseUrl: 'src',
    paths: {
        'san-router': '../dep/san-router/dist/san-router.source'
    }
});

API

router

路由器对象。

路由用于将特定的 URL 对应到组件类上。在 URL 变化并匹配路由规则时,路由将初始化特定组件并渲染到页面上。你也可以将 URL 对应到函数上,路由将在 URL 规则匹配时执行特定函数。

add({Object}options)

说明

添加一条路由规则。

你可以指定 Component 和 target 参数,让规则匹配时在 target 中渲染一个 Component。

router.add({
    rule: '/book/:id',
    Component: san.defineComponent({
        route() {
            let route = this.data.get('route');
            // route.query.id
        }
    }),
    target: '.app-main'
});

你也可以指定一个 handler 函数,让规则匹配时执行这个函数。

router.add({
    rule: '/book/:id',
    handler(e) {
        e.query.id
    }
});

路由规则有2种形式:

  • string URL 的 path 部分与字符串完全匹配。支持 : 标记的路径参数,根据名称作为 query 的参数传递给相应的组件或函数。
  • RegExp URL 的 path 部分匹配该正则。正则中的 group 将根据序号作为 query 的参数传递给相应的组件或函数。

参数

  • string|RegExp options.rule - 路由规则
  • Function options.Component - 规则匹配时渲染的组件类
  • string options.target - 组件渲染的容器元素,默认值为 #main
  • Function options.handler 规则匹配时的执行函数

listen({Function}listener)

说明

添加路由监听器。当发生路由行为时,监听器函数被触发。

router.listen(function (e, config) {
    e.query.id
});

参数

  • Function listener - 监听器函数

监听器函数参数

  • Object e - 路由信息对象
  • Object config - 路由配置对象

unlisten({Function}listener)

说明

移除路由监听器。

参数

  • Function listener - 监听器函数

setMode({string}mode)

说明

设置路由模式。支持两种模式:hash | html5,默认为 hash。

参数

  • string mode - 路由模式,hash | html5

start()

说明

启动路由

stop()

说明

停止路由

Link

具有路由功能的应用中,建议使用 Link 组件代替 a 标签。Link 组件可以根据路由模式渲染一个链接。通过 to 属性指定目标地址,Link 组件将渲染一个带有正确地址的 a 标签。

san.defineComponent({
    components: {
        'router-link': Link
    },

    template: `
        <div>
            <header>
                <router-link to="/user">用户信息</router-link>
            </header>
        </div>
    `
});

san-router's People

Contributors

erik168 avatar errorrik avatar zxhfighter avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.