npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

routefilter.emb

v0.0.7

Published

路由过滤中间件 ,注入在 request 一组 过滤器。可实现请求过滤器,和在过滤器中实现请求和返回,实现RMVC中把请求脱离出去

Downloads

5

Readme

route-filter.emb

Package Name :route-filter.emb

Description:基于浏览器环境 sme-router 为例开发的路由中间件,

可在路由请求中注入请求过滤,实现过滤和请求处理;

也可作为公共执行器 进行AJAX请求层分离

Description

他把函数变成Promise函数,在浏览器环境下执行全局函数的调用。

他把函数注入在Router 的request对象中 异步调用 Promise 函数 实现过滤。

他有几个优点和尝试:

前端无next 方法的替代方案。

分离Ajax 请求的实现方案。

使用场景 基于浏览器的 RMVC 构建过程过于复杂时,

我们可以使用他把Ajax 请求从 Controller 中脱离出去,

实现新的尝试 ARMVC ( Ajax Router Model View Controller );

Install 安装

npm install routefilter.emb -D

import registerExecutor from 'routefilter.emb'
// or 浏览器环境
registerExecutor()

USE 使用

Quick to use 快速使用

引入
const registerExecutor= require('routefilter.emb') ;

Tip: The browser environment does not need to be require.

浏览器环境不需要引入,可直接调用 registerExecutor 方法

执行器 & 使用

模拟执行器

//除非页面刷新自动再次调用 改变保存的 执行器 请设置返回事的错误捕捉 否则调用是await 将无法获取结果 ,或者只能使用 try来 错误捕捉 //适用页面不刷新单次验证环境

普通执行器
function Filter2(data, res) {
            console.log('2.', data, res)
            return Date.now()
}
普通执行器调用

函数中建议使用 asynv await 调用 获取结果

路由中 执行器 会挂载 在 request 对象中

Executor.Filter2().then((res) => console.log(res));
// OR 路由中 执行器调用
let result= await req.Filter2(data)
自执行执行器 _ 下滑线开头

自执行执行器 页面加载时会自动执行并保存结果会

页面刷新自动再次调用 改变保存的结果

适用页面不刷新单次验证环境

// 自执行执行器 _ 下滑线开头  
function _Filter1(data) {
            console.log('1', data)
            return Date.now()
}
自执行执行器 结果获取 &&调用

注意:获取的结果 是 注册时就已经执行并保存的 页面不刷新 任何时候获取的结果都是相同

再次调用获取新的结果只是返回新的结果 也不会更新自动执行的结果

//结果获取
let result=  await  Executor._Filter1_
//再次调用获取新的结果 此调用不会影响自动执行后的结果
let result =await  Executor._Filter1()
//如果没看懂 ,请看例子
 Executor._Filter1_.then((res) => console.log(res));
//1566569316591

setTimeout(() => {
   Executor._Filter1_.then((res) => console.log(res));
    //结果相同 1566569316591
}, 1000)
注入

请注意注册执行器 ,尽量不要执行器重名 根据过滤器函数名注入

全局注入 脱离路由 全局调用

全局多个注入 Array - 注入多个 脱离路由
 // 注册全局 执行器 多个
 registerExecutor([_Filter1, Filter2],true);
全局单个注入 Function - 注入单个 脱离路由
// 注册全局过滤执行器  注意: 重复注入 自动执行执行器 会多次执行
registerExecutor(_Filter1,true);
路由注入

与全局注册语法相同

在路由中注人的执行器 在路由执行后 全局也可以调用

request.Executor[执行器] 与全局调用 方法性质一致

router.use(registerExecutor(_Filter1))

Demo 例子 FRMVC 增加过滤请求层的用法

FilterExecutor 滤器的编写
Executor=[
    userSignIn(data) {
         $.ajax({
            type: "get",
            url: "/users/issignin",
            data,
            dataType: "json",
            success:(res)=>{return res},
            error:(res)=>{return res  }
        })
    },
        // 自执行执行器 _ 下滑线开头  
 	_Filter1(data) {
            console.log('1', data)
            return Date.now()
	}
]
export default Executor
Router注入过滤器

import userFilter from './filter/userFilter.js'
//用户过滤器 . 过滤器层 

const router = new SMERouter('router-view', 'hash')
// 脱离路由  注册全局过滤执行器 多个
registerExecutor(FuserFilter.userSignIn,true);
//OR  路由注册
router.use(registerExecutor(userFilter.userSignIn))


Controller 使用过滤器
//路由控制器调用
class Controller {   
    async render(req, res, next) {
         
        //执行全局执行器  获取注册时自执行的数据
        let result1 = await Executor._Filter1_;
         //再次执行 获取新的数据
        let result2 = await Executor._Filter1();
        //调用 用户验证过滤执行器  
        let isSingIn = await req.Executor.userSignIn(Data);

        if (isSingIn) {
            //如果验证成功 ,渲染
           res.render("Rander Page")
        }  
    }
}
export default new Controller()

Author:吃火星的宝宝

GitHub: embaobao

packageGit Hub

Web :个人网站

Thank you for using !

谢谢您的使用!

Hope you can put forward more opinions!

希望您可以提出更多意见!

邮箱 Emil :[email protected]

我的意见箱 My suggestion box