# route.js
**Repository Path**: long_ren/route.js
## Basic Information
- **Project Name**: route.js
- **Description**: 路由注册/解析器,它在不刷新页面的情况下,不同的URL路径,并根据不同的URL路径来匹配函数流
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 38
- **Created**: 2016-11-16
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 引入文件说明
### 项目中不使用ramda 引入一个文件
```html
```
## 使用ramda 引入三个文件
```html
```
# 浏览器路由匹配
`内含函数流,中断,异步功能`
```javascript
var s = J.stream;
var ds = J.dostream;
var dofn = route.route([
//解析URL参数并放到ctx.query中
//nextp 代表执行下面的规则
s(route.queryStringG,J.ctx("query"),route.nextp)
//匹配/hello 匹配失败继续向下执行
,s(route.nameP("/hello"),domlog)
,s(route.nameP("/"),domlog)
,s(route.paramP("/:a/:b"),domlog)
,s(route.nameP("/hello"),domlog)
,s(route.startP("/yibu"),R.tap(loadState),yibutest,domlog)
,s(diyP,domlog)
,domlog404
]);
dofn("/hello");
```
## 自动监控浏览器#(hash)发生变化
```javascript
//监控hash变化 获取URL执行dofn
ds(null,route.hashMilldam,dofn);
```
## 自动监控H5路由
```javascript
//利用H5 api改变URL 放入浏览器历史记录
//需要引入文件 /js/h5routeMilldam.js
ds(null,h5r.h5routeMilldam,dofn);
```
## 详见demo [在线demo](http://sandbox.runjs.cn/show/mg3ch4e4)
## J.stream 函数流 介绍
```javascript
var fn=J.stream(fn1,fn2,fn3);
fn(arg);
```
约等同于
```javascript
var ctx={};
var fn1r=fn1(arg,ctx);
var fn2r=fn2(fn1r,ctx);
var fn3r=fn3(fn2r,ctx);
return fn3r;
```
中断处理 比如`fn1`遇到业务错误不需要执行后面的函数
`fn1`返回 `J.left(数据)` 即可
异步处理 `fn2`需要请求接口获得数据之后交给`fn3`处理
fn2返回J.milldam即可 详见在线demo
## qq群讨论
426566496