jsi

JavaScript Integration System.

Usage no npm install needed!

<script type="module">
  import jsi from 'https://cdn.skypack.dev/jsi';
</script>

README

:q

JSI Introduction

a simple module loader , you can use npm installed modules in web browser such as it work in nodejs!

Install:

npm install jsi -g

Start:

  • install and run example:

     $ cd <webroot>
     $ jsi example
     $ open http://localhost:8080
    
  • command line

    • on [webroot]

        $ jsi example 									--deplay hello world example
        $ jsi start										--start debug server
      
    • on [webroot]/[scriptroot]

        $ jsi export -o temp.js main.js					--export main.js as a single javascript file
                                                            (main.js variables on global namespace;
                                                                buf dependence modules is hidden, you can use require('modulename') to get it )
        $ jsi export -o exported.js -ns xmldom xmldom	--export package: export xmldom to a single script and exports variables on the namespace xmldom.
      
      
      
        //advance useage:  install a optimized external package on package system.
      

$ jsi install jquery--install a exter:qnal optimized package from npm $ jsi install ./workspace/xmldom--install a external optimized package from local filesystem

  • lite template example

      //function template
      var tpl = function(list){
          return <div>
              <c:if test='${var1>var2}'>test${value}</c:if>
              <p> this is a xml style templete ${varName}; 
              default syntax support for mostly javascript editor (E4X standard) </p>
          </div>
      }
      //inline template render
      var tpl = <div>
          <p> this is a xml style templete ; 
              default syntax support for mostly javascript editor (E4X standard) </p>
      </div>
      
      //single template file
      var tpl = liteXML("/path.tpl")
    
      //partly template file(css3 selector)
      var tpl = liteXML("/path.tpl#header")
    
  • javascript debug and compress

    • enable debug

      javascript:document.cookie="JSI_DEBUG=true"

    • disable debug

      javascript:document.cookie="JSI_DEBUG=false"

  • test route /route.js

      content:
      exports = [
    
          //mock with json data
          {path:"/service/login.do",data:{"auth-token":"sdeee23734ru3hfbvncm"}},
    
          //mock from remote url 
          {path:"/service/user.do",remote:"http://test.com/user.do"},
    
          //mock from local json file
          {path:"/service/user.do",file:"./mock/user.json"},
    
    
          //mock with nodejs request handle
          {
              path:	/\/service\/user\/(\d+)/,
              action:	function(request,response,path,uid){
                  var headers = {"Content-Type":"text/json;charset=utf-8"};
                  response.writeHead(200, headers); 
                  response.end(JSON.stringify({"uid":uid}));
                  return true;
              }
          }
      ]