PyJs

demixcn@gmail.com

介绍

项目地址

PyJs是一种浏览器端的CommonJs实现

PyJs特别适用于一些只有静态文件构成的项目,最佳是只有js构成的项目,如baidu connect sdk.

使用

  1. pyjsdir

    pyjsdir是pyjs运行的核心文件夹,所有commonjs规范的js文件,必须放在pyjsdir中,默认为src,可在manifest.json中设置。

  2. 本地服务器中使用pyjs

    使用

    python pyjs.py runserver                        
                        
    启动本地服务器
    测试页面中引入lib/pyjs.js
    对于以.js结尾的文件,将查找相对路径,若相对路径下没有原文件,则搜索pyjsdir下文件或文件夹,若有文件与之相同,则编译包之后返回,replace为local。若有文件夹与去除.js部分相同,则查找文件夹下__init__.js文件,若有,按里面定义的__all__数据取出所有文件,编译之后返回。
  3. 编译

    上线前,运行

    python pyjs.py                        
                        
    会在build文件下生成所有commonjs模块文件。manifest中可以制定combo_url,若指定,运行编译后文件的require时,将通过combo请求文件。若没有指定,将同时加载多个js文件。
    文件同时会生成boot.js,里面有文件的依赖关系,线上html引用这个文件即可。

manifest.json声明属性

  1. version

    type:string

    版本号

  2. pyjsdir

    type:string

    pyjs包所在的文件夹,默认为src

  3. combo

    type:object

    设置combo,属性combo_url标志combo目标url

  4. replace

    type:object

    token: %#xxx#%,将替换文件中%##%中间的字符

        "replace":{
            "replace_type":{
                "token1":"url1",
                "token2":"url2",
                "token3":"url3"
            }
        }                        
                        

Local Transimission

本地server启动后,若配置server.json,会启用请求转发。

server.json声明分为两部分,key为正则,对应匹配url请求规则;value为映射

  1. 映射到线上请求

    所有以http开头的都会映射到线上请求

    这里不会做权限控制等,有复杂需求使用自定义插件

  2. 映射到本地插件

    所有以plugins开头都会映射到本地插件,对应到plugins的相应module中。

    module文件必须包含main函数,会将请求的search参数传入到main函数中。

    返回值: content-type , body