`
web322_szb
  • 浏览: 23409 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

SPM v.1.1.2 With SeaJS

 
阅读更多

 

SPM v1.1.2使用指南

1.SPM用途

SeaJS提供了模块化开发的机制,在代码开发完后,还需要做产品发布相关的一些操作。 这些可以通过SPM来完成,SPM提供了模块安装、压缩、打包部署等功能。

2.SPM安装

1.从nodejs官网下载最新版本的node。 这里以node-0.8.14为例,直接下载windows版本的安装包即可,默认安装到"C:\Program Files\nodejs", 会自动添加到path中,查看一下版本。

C:\Documents and Settings\Administrator>node -v
v0.8.14

2.新版的node都带了npm,这里通过npm来安装spm。下面指定安装1.1.2版本,在当前为最新版本。 如果不指定版本号,默认安装最新版本。安装包大小为11.8M,根据网速不同,请耐心等待。

C:\Documents and Settings\Administrator>npm install spm@1.1.2  -g
npm http GET https://registry.npmjs.org/spm/1.1.2
npm http 200 https://registry.npmjs.org/spm/1.1.2
npm http GET https://registry.npmjs.org/spm/-/spm-1.1.2.tgz
npm http 200 https://registry.npmjs.org/spm/-/spm-1.1.2.tgz
npm http GET https://registry.npmjs.org/spm-env
npm http GET https://registry.npmjs.org/csslint
npm http GET https://registry.npmjs.org/async
...

下载完spm后,会根据压缩包中的package.json自动安装相关的依赖包,最后会显示如下的界面。

C:\Documents and Settings\Administrator\Application Data\npm\spm -> C:\Documents and Settings\Administrator\Application
Data\npm\node_modules\spm\bin\spm
spm@1.1.2 C:\Documents and Settings\Administrator\Application Data\npm\node_modules\spm
├── inherits@1.0.0
├── spm-env@1.0.0
├── colors@0.6.0-1
├── semver@1.0.14
├── async@0.1.22
├── csslint@0.9.9
├── coffee-script@1.3.3
├── clean-css@0.6.0
├── JSONPath@0.9.0 (underscore@1.3.3)
├── prettyjson@0.7.1
├── request@2.9.203
├── shelljs@0.0.8
├── uglify-js@1.3.4
├── optimist@0.3.5 (wordwrap@0.0.2)
├── fstream@0.1.19 (graceful-fs@1.1.14, rimraf@2.0.2, mkdirp@0.3.4)
├── tar@0.1.13 (block-stream@0.0.6)
├── less@1.3.1
├── jshint@0.7.3 (cli@0.4.3, minimatch@0.0.5)
├── fstream-ignore@0.0.5 (minimatch@0.2.9)
├── glob@3.1.14 (graceful-fs@1.1.14, minimatch@0.2.9)
├── prompt@0.2.8 (revalidator@0.1.5, pkginfo@0.2.3, read@1.0.4, winston@0.6.2, utile@0.1.6)
└── connect@2.6.2 (fresh@0.1.0, pause@0.0.1, cookie-signature@0.0.1, bytes@0.1.0, cookie@0.0.4, crc@0.2.0, debug@0.7.
0, qs@0.5.1, formidable@1.0.11, send@0.1.0)

3.安装后检查一下版本

C:\Documents and Settings\Administrator>spm  -v
v1.1.2

 

  如果这种方式安装比较慢,可以git 源码后安装,详见官方文档。 

本次测试使用的是Widnows XP操作系统 
以下演示使用的是v1.1.2版本,不同的版本可能存在差异,请自行留意。

3.SPM查找和安装模块

我们先在C盘根目录建立一个assets目录,用于保存前端开发的所有文件。 
先使用spm下载开发需要的模块,spm默认的模块服务器为http://modules.spmjs.org/。 也可以自己在内网搭搭设一个模块服务器,这里不详述。

我们可以先使用spm search命令在模块服务器查找可安装的模块的版本。

C:\assets>spm search seajs
C:\assets>spm search jquery  

C:\assets>spm search mustache //以mustache为例子
    ...
    versions:                //这里列出可用的版本
   0.4.0:
     - mustache.js
   0.5.0:
     - mustache.js
 root:     gallery  //显示模块的跟目录
 name:     mustache
 tag:
 type:

C:\assets>spm install seajs@1.2.1     //指定安装seajs版本
C:\assets>spm install gallery.jquery  //不指定版本号,默认安装服务器上jquery最新版本
C:\assets>spm install gallery.mustache //不指定版本号,默认安装服务器上mustache最新版本

最近模块服务器的目录结构有调整,jquery路径安装变为gallery.jquery,mustache安装路径为gallery.mustache

执行完上面的模块安装命令,在assets目录里面会多了sea-modules目录,里面有seajs和下载下来的模块。

4.SPM测试目录和文件

我们这里设定的整个开发目录结构为:

C:\assets>tree  /f
文件夹 PATH 列表
卷序列号为 4421-1F56
C:.     //这里表示当前目录C:\assets,存放前端的所有文件
├─sea-modules  //通过spm安装后自动生成的目录
│  ├─seajs
│  │  └─1.2.1
│  │          plugin-less.js
│  │          plugin-base.js  //插件的基类
│  │          plugin-combo.js
│  │          plugin-debug.js
│  │          plugin-i18n.js  //全球化组件,后面的例子有用到
│  │          plugin-json.js
│  │          plugin-coffee.js
│  │          plugin-reload.js
│  │          plugin-storage.js
│  │          plugin-text.js  //文件组件,读取模版文件
│  │          sea-debug.js
│  │          sea.js
│  │          package.json
│  └─gallery
│      ├─jquery     //这个做什么的不用说了吧
│      │  └─1.8.3
│      │      │  jquery-debug.js
│      │      │  jquery.js
│      │      │  package.json
│      │      │
│      │      └─gallery
│      │              jquery.tgz
│      │
│      └─mustache   //前端模版类库
│          └─0.5.0
│                  mustache-debug.js
│                  mustache.js
│                  package.json
│
└─apps           业务开发的总目录,通用的模块开发可能会建立src和test目录,
    │            这里只是演示spm的使用,所以采用自定义的开发目录结果。
    └─hello 该目录存放html页面和spm build需要的package.json。
        │  index1.html           这是引用为未部署的js模块的样例。
        │  index_module.html     这里是引用已部署的js模块的样例。   
        │  package.json          spm build的参数文件,类似ant的build.xml。
        │
        └─js  该目录存放业务开发的模块文件,这里以hello-seajs的文件原例,简单修改了下。
            │  main.js
            │  spinning.js
            │
            ├─tpl (这里存放业务模块开发需要用的模版文件)
            │      userinfo.tpl
            │
            └─i18n (这里存在全球化的资源文件)
                │  lang.js 默认语种资源文件
                │
                └─zh-cn
                        lang.js  中文语种资源文件

假定我们已经完成上面的业务开发,现在我们的任务是把js目录下的所有文件打包部署到sea-module里面,并且对js文件做压缩。 然后修改index.html的路径的url,就可以引用部署好的模块。

注意i18n的lang文件和模版文件不支持浏览器从本地读取,需要部署到nginx或者tomcat等web服务器中访问。

 //如果是nginx,可以参考下面的配置,nginx/conf/nginx.conf里面server区段
 server {
        listen       80;           //端口
        server_name  localhost;   //主机地址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            autoindex  on;      //打开目录和文件浏览功能
            root   c:/assets;   //路径在这里
            index  index.html index.htm; //开始文件

            autoindex_exact_size on; //显示文件大小
            autoindex_localtime  on; //显示文件时间
        }
       }

5.SPM打包部署

谈到部署,就不能不涉及package.json文件,下面是本例的打包配置文件。

{
    "name": "hello-seajs",
    "version": "1.0.0",
    "dependencies": {
        "jquery": "gallery/jquery/1.8.2/jquery",

    },
    "root": "apps",
    "output": {
        "main.js": ".",
        "i18n": "i18n/**/*.js",
        "tpl": "tpl/**/*.tpl"
    },
    "spmConfig": {    
        "build": {
            "src": "js",
            "to": "../../sea-modules/{{root}}/{{name}}/{{version}}"
        }
    }
}

其中spmConfig用于制定命令相关的参数,如上制定了spm build 的src和to两个参数。 
src表示javascript代码所在的路径。 
to表示打包后拷贝到什么地方。 
上面定义的root,name,version都在打包的时候引用到,用于构建打包的完整路径。

output定义了输出的结果和形式。具体output参数解释见https://github.com/spmjs/spm/wiki/package.json-:-output。 
这里表示js目录文件都合并为一个main,js并压缩。其他的i18n文件和tpl文件需要复制过去。

dependencies 指明业务代码所依赖的模块,打包过程中据此进行依赖替换。 这里相当于seajs.config中alias的定义,拷贝过来的时候要注意字符的单引号改为双引号。 
注意:json文件的key和value都是双引号。

更多参数可以查阅spm help build。

C:\assets>spm help build
BUILD CMD MODULE
usage: spm build [options]

Options:
  --only                     only execute current phrase plugin.
  --global-config            use user custom config.
  --base                     set base directory.                       [string]  [default: "C:\\assets"]
  --src                      set src directory.                        [string]
  --dist                     set dist directory.                       [string]
  --source                   set source server.
  --version                  set module version.                       [string]
  --source-files             set directory which need to compile.      [default: null]
  --throwErrorOnDepNotFound  throw error when dependencies not found.  [boolean]  [default: false]
  --with-debug               add debug file.                           [string]  [default: "debug"]
  --timeout                  Set request service time delay            [default: 6000]
  --verbose, -v              Show more verbose information.            [default: 2]
  --encoding                 Set file encoding!                        [default: "utf8"]

我们切换到有package.json的目录执行spm build,spm会读取该目录下的package.json文件。

C:\assets\apps\hello>spm build

build过程中会有Not Found i18n!lang dependency!的警告,不用理会。 
实际上代码运行的时候我们会在seajs.config中配置好preload的插件,不会有影响。 
build结束后在sea-modules/apps/hello/1.0.0/产生相应的代码文件,业务js文件合并到main.js。

C:\assets\sea-modules>tree apps /f

执行上面的命令,可以查看build的输出结果。

C:\ASSETS\SEA-MODULES\APPS
└─hello
    └─1.0.0
        │  main.js         //spinning.js 合并到main.js中。
        │  main-debug.js   //没有压缩的js文件,主要用于调试。
        │
        ├─i18n
        │  │  lang.js
        │  │
        │  └─zh-cn
        │          lang.js
        │
        └─tpl
                userinfo.tpl

具体引用文件的变化,可以通过Chrome调试器中Source窗口查看引用文件的路径。 
总结:这里只是spm工具简单使用的例子,更多的使用方式请参考相关的文档。

本案例的源码见附件中,请部署到webserver中测试。

分享到:
评论

相关推荐

    vue3 访问通义千问聊天代码例子

    vue3 访问通义千问聊天代码例子

    基于Python的Flask-vue基于Hadoop的智慧校园数据共享平台实现源码-演示视频.zip

    基于Python的Flask-vue基于Hadoop的智慧校园数据共享平台实现源码-演示视频 项目关键技术 开发工具:Pycharm 编程语言: python 数据库: MySQL5.7+ 后端技术:Flask 前端技术:HTML 关键技术:HTML、MYSQL、Python 数据库工具:Navicat、SQLyog

    C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例1

    【实验1】:读取一次AI0通道数值 【实验2】:一次读取AI0通道多个数值 【实验3】:单次模拟量输出 【实验4】:连续模拟量输出(输出一个正弦曲线)

    无人船的Smith-PID跟踪控制方法研究及实现:融合传统与最优PID策略的LOS曲线跟踪资料,基于无人船Smith-PID改进

    无人船的Smith-PID跟踪控制方法研究及实现:融合传统与最优PID策略的LOS曲线跟踪资料,基于无人船Smith-PID改进跟踪控制技术及其LOS曲线跟踪方法研究资料,基于无人船的smith-pid跟踪控制资料。 首先,针对pid进行了改进,有传统pid,最优pid和基于smith的pid三种控制方式。 然后还在smithpid基础上设计了LOS的曲线跟踪方法。 (有对应参考文献)。 有意者可直接联系,参考学习资料。 python语言。 ,基于无人船的Smith-PID跟踪控制; PID改进(传统PID、最优PID、基于Smith的PID); Smith-PID曲线跟踪方法; 参考学习资料; Python语言。,基于无人船的Smith-PID优化跟踪控制资料

    自研船舶电力推进系统MATLAB仿真报告:从柴油机+同步发电机到异步电机直接转矩控制的全面模拟与实践,船舶电力推进系统自搭MATLAB仿真报告:从柴油机同步发电机到异步电机直接转矩控制的完整过程与参

    自研船舶电力推进系统MATLAB仿真报告:从柴油机+同步发电机到异步电机直接转矩控制的全面模拟与实践,《船舶电力推进系统自搭MATLAB仿真报告:从柴油机同步发电机到异步电机直接转矩控制的完整过程与参数配置详解》,自己搭建的船舶电力推进系统(船舶电力推进自动控制)完全自搭MATLAB仿真,可适度,含对应27页正文的中文报告,稀缺资源,仿真包括船舶电站,变流系统和异步电机直接转矩控制,放心用吧。 三个文件逐层递进 柴油机+同步发电机(船舶电站) 柴油机+同步发电机+不控整流全桥逆变 柴油机+同步发电机+变流模块+异步电机直接转矩控制 所有参数都是配好的,最大负载参考变流系统所带负载两倍,再大柴油机和同步发电机参数就不匹配了,有能力可以自己调 ,核心关键词:船舶电力推进系统; MATLAB仿真; 船舶电站; 变流系统; 异步电机直接转矩控制; 柴油机; 同步发电机; 不控整流全桥逆变; 参数配比。,《船舶电力推进系统MATLAB仿真报告》

    西门子博图WinCC V15自动化系统项目实战:多服务器客户端下的PID DCS闭环控制及参数调整实战指南,西门子博图WinCC V15自动化系统项目实战:多服务器客户端下的PID DCS闭环控制及参

    西门子博图WinCC V15自动化系统项目实战:多服务器客户端下的PID DCS闭环控制及参数调整实战指南,西门子博图WinCC V15自动化系统项目实战:多服务器客户端下的PID DCS闭环控制及参数调整实战指南,西门子博图WinCC V 15大型自动化系统项目,包含多台服务器客户端项目,系统采用安全1516F -3PN DP 外挂多台精智面板,1200PLC ET200SP 变频器 对整个工艺过程PID DCS 闭环过程控制,如何调整温度压力流量液位等参数,实用工程项目案例 ,西门子博图WinCC V 15; 大型自动化系统; 多台服务器客户端; 安全外挂; 精智面板; 1200PLC ET200SP; 变频器; PID DCS; 闭环过程控制; 温度压力流量液位调整; 工程项目案例,西门子博图WinCC V15大型项目:多服务器客户端的PID DCS闭环控制与实用参数调整

    计算机网络资源全解析: 硬件、软件、协议及安全机制详解与应用

    内容概要:本文详尽介绍了计算机网络相关资源及其各方面构成要素,首先阐述了硬件层面的各种传输媒介和设备如双绞线、同轴电缆、光纤以及台式电脑、笔记本、大型计算机等设备,还包括网络互联所需的各类组件如网卡、交换机、路由器等。其次探讨了多种操作系统的特性和主要功能,以及各类通讯和支持应用程序的概述,涵盖浏览器、图像和视频编辑等常用软件。再深入讨论了多种常见网络协议如TCP、UDP、HTTP等的功能特性。最后还提到了确保网络安全运行的重要措施和工具如MIB、SNMP以及防火墙、入侵检测系统等。并且简要提到计算机网络在不同的应用环境,从局域网到移动网络。 适合人群:所有对计算机网络技术感兴趣的初学者和希望深入了解各个组成成分的技术人员. 使用场景及目标:为用户提供计算机网络资源全面而系统的认识,帮助他们建立对于该领域的理论和技术的扎实认知基础,提高在实际环境中识别配置及维护计算机网络系统的能力.

    【GPS北斗定位】基于matlab卡尔曼滤波KF北斗GPS单模和双模定位比较【含Matlab源码 10974期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    ABAQUS中隧道结构模型的无限元应用:超声激励源的施加方法、3D无限元吸收边界的添加技巧、模型结果精确性校核流程及教学视频与CAE、INP文件解析,ABAQUS隧道模型中3D无限元吸收边界的应用:超

    ABAQUS中隧道结构模型的无限元应用:超声激励源的施加方法、3D无限元吸收边界的添加技巧、模型结果精确性校核流程及教学视频与CAE、INP文件解析,ABAQUS隧道模型中3D无限元吸收边界的应用:超声激励源的施加与模型结果精确性校核的实践教程,ABAQUS无限元吸收边界,abaqus隧道无限元,1.超声激励源施加;2.3D无限元吸收边界添加方法;3.模型结果精确性校核;4.提供教学视频,cae、inp文件。 ,ABAQUS无限元吸收边界;ABAQUS隧道无限元;超声激励源施加;3D无限元吸收边界添加;模型结果精确性校核;CAE和INP文件。,ABAQUS中超声激励下无限元吸收边界设置及模型精度验证教程

    【SLAM】基于matlab扩展卡尔曼滤波器EKF同步定位与建图SLAM【含Matlab源码 10978期】复现.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    git自用lllllllllllllllllll

    git自用lllllllllllllllllll

    【Django小白项目】参照本,包含python、HTML、Django

    本资源与文章【Django小白项目】为一体,此为已成功项目,供给给Django初学者做参考,有不会的问题可以私信我噢~

    C++矩阵运算库matrix

    使用一维数据表示向量和二维矩阵,支持常用运算。

    基于STM32的宠物自动喂食器系统设计.pdf

    1、以上文章可用于参考,请勿直接抄袭,学习、当作参考文献可以,主张借鉴学习 2、资源本身不含 对应项目代码,如需完整项目源码,请私信博主获取

    基于多目标粒子群优化算法(MOPSO)的微电网多目标经济运行分析与优化策略考虑响应侧响应的协同调度策略,基于多目标粒子群优化算法(MOPSO)的微电网经济调度优化:含风光储荷一体化模型与需求侧响应策略

    基于多目标粒子群优化算法(MOPSO)的微电网多目标经济运行分析与优化策略考虑响应侧响应的协同调度策略,基于多目标粒子群优化算法(MOPSO)的微电网经济调度优化:含风光储荷一体化模型与需求侧响应策略,考虑需求侧响应的微电网多目标经济运行 建立了含风光储荷的微电网模型,以发电侧成本(包括风光储以及电网的购电成本)和负荷侧成本最小为目标,考虑功率平衡以及储能SOC约束,建立了多目标优化模型,通过分时电价引导负荷需求侧响应,得到可削减负荷量,同时求解模型,得到风光储以及电网的运行计划。 这段代码是一个使用多目标粒子群优化算法(MOPSO)解决问题的程序。下面我将对程序进行详细的分析和解释。 首先,程序的目标是通过优化算法来解决一个多目标优化问题。程序中使用的优化算法是多目标粒子群优化算法(MOPSO),该算法通过迭代更新粒子的位置和速度来搜索最优解。 程序的主要功能是对能源系统进行优化调度,包括光伏发电、风力发电、储能和电网供电。程序的目标是最小化能源系统的成本,并满足负荷需求。 程序的主要思路是使用粒子群优化算法来搜索最优解。程序中定义了一个粒子类(Particle),每个粒子代

    data.gov.sg geojson部分项目整理

    data.gov.sg geojson部分项目整理

    基于MATLAB Simulink的避障功能欠驱动无人船航迹跟踪控制仿真实验研究,基于MATLAB Simulink的欠驱动无人船避障功能路径跟踪控制仿真实验研究,包含避障功能的欠驱动无人船航迹(路径

    基于MATLAB Simulink的避障功能欠驱动无人船航迹跟踪控制仿真实验研究,基于MATLAB Simulink的欠驱动无人船避障功能路径跟踪控制仿真实验研究,包含避障功能的欠驱动无人船航迹(路径)跟踪控制仿真实验,基于MATLAB Simulink制作 ,避障功能; 欠驱动无人船; 航迹(路径)跟踪控制; MATLAB Simulink 仿真实验; 避障算法。,基于MATLAB Simulink的避障无人船航迹跟踪控制仿真实验

    【车间调度】基于matlab樽海鞘算法求解带小车的车间调度AGV-fjsp问题【含Matlab源码 3283期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

Global site tag (gtag.js) - Google Analytics