zoukankan      html  css  js  c++  java
  • [PyJs系列介绍]四、代理与插件

    这篇主要讲js之外的PyJs扩展功能。

    首先要讲PyJs另外一个设计原则:

    系统不集成过多功能,专注于实现其的核心价值。附属功能,应该使用插件或其他的形式附加上去。

    一个系统如果实现了过多的功能,满足了过多的需求,就会导致系统过于庞大。一方面可维护性降低,另外一方面新人入门的门槛也会增加。独立系统负责独立功能,各系统通过特殊的方式能组合在一起,这样的系统应该是更完美的。

    PyJs的核心价值就是基于commonjs语法的本地js调试及上线打包的实现。我不希望其他任何平台级别的功能加入到这个系统里,但是很多时候我们的本地调试又会需要一些增强的功能,我们在PyJs中是以代理及插件的方式来实现这个增强。

    Server.json

    PyJs根目录下可以有一名为server.json的文件。json的内容标志了服务器的代理及插件的规则。 json中的key代表了url的匹配规则,可以为字符串或正则表达式。json中的value根据前缀不同分别作为代理或插件存在。

    代理

    代理的server.json中可以声明如下:

    {
            "baidu":"http://www.baidu.com"
    }


    意为对于所有url中含有baidu的请求,全部抓取 http://www.baidu.com 的内容返回。

    使用场景:本地ajax模拟

    插件

    server.json中还可以做一下声明:


    {
            "baidu":"http://www.baidu.com",
            "combo":"plugins.combo"

    } 

    json中一切以plugins开头的值将被当作插件,映射到相应plugins目录下的.py文件,这里的combo请求将映射到plugins/combo.py里。

    所有的plugins的py文件都需要定义一个main函数,接受一个参数,将会传入url上的search串。main函数都需要返回一个元组,值分别为响应的content-type和body。如一个最简单的插件可以写作:

    def main(params):

        return ('text/html' , params) 


    使用场景:更复杂的代理(如需要用户权限认证的);更复杂的动态请求(如模拟combo) 

    通过代理和插件,我们基本可以完成前端的所有日常开发,如代理重定向到php服务器取模板,插件模拟用户登陆请求等。

  • 相关阅读:
    modal 过程中添加动画
    SVSegmentedControl 标签页
    带输入框的UIAlertView
    Django小结
    译Step-by-Step Guide on Configuring Django-Userena
    使用国内镜像通过pip安装python 包
    pycryto实现AES加密解密算法
    notepad++搜索的一些东西
    [转]notepad++正则表达式替换字符串详解
    [转]Notepad++快捷键
  • 原文地址:https://www.cnblogs.com/demix/p/2171803.html
Copyright © 2011-2022 走看看