标签:seajs   nodejs   npm   spm   js

1. 概述

本文章来源于本人在项目的实际应用中写下的记录。因初期在安装和使用Seajs和SPM的时候,有点不知所措的经历。为此,我们编写本文档,通过图文并茂的方式来为大家讲解seajs和spm编译环境的搭建和基本使用方法。

2. 认识SEAJS

seajs是一种前端模块化加载框架,与jQuery等javascript框架不同,SeaJS不会扩展封装语言特性,而只是实现JavaScript的模块化及按模块加载。SeaJS的主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载,将前端工程师从繁重的JavaScript文件及对象依赖处理中解放出来,可以专注于代码本身的逻辑。SeaJS可以与jQuery这类框架完美集成。使用SeaJS可以提高JavaScript代码的可读性和清晰度,解决目前JavaScript编程中普遍存在的依赖关系混乱和代码纠缠等问题,方便代码的编写和维护。

3. 下载Seajs和spm编译环境

1.首先需要本机安装Nodejs,nodejs也是目前比较流行的技术之一,至于nodejs,有兴趣的可以在www.nodejs.org 官网查看具体API。一般情况下安装好之后,是会默认安装好npm工具的,可以进入本机cmd键入npm -v 查看,正常是话会提示下列版本信息。

2.设置全局路径(可选,如不执行此步骤,默认安装会安装在appdata):我的理解就是这个路径是你通过npm安装之后所以的东西存放的路径。建议安装好之后设置一下npm的全局变量,因为默认是在appdata里面的,可以将全局变量设置成自己想要的位置,具体方法:

首先在本地你安装路径下新建两个文件夹(你想要放下载文件的地方):

在cmd命令:npm config set prefix "D:\Program Files\nodejs\node_global"

以及npm config set cache "D:\Program Files\nodejs\node_cache"

基本上全局路径就配置好了,以后安装的插件和工具都会放在这里面,我试了试 npm install jquery -g(-g 这个参数就是安装在全局);

命令执行完成之后,就会在刚刚global/node_modules目录里面自动生成jquery的文件夹和js文件。

3.安装需要的插件:

首先,我们需要使用seajs的东西,所以下载seajs:

如果在目录下有了,说明正常:

然后我们需要安装spm编译打包工具,这步我们推荐 npm install spm@2.x -g ,如果直接npm install spm默认使用最高版本3.X,在这个版本下我发现编译工具不能编译我写的JS(查了原因原来是3.X和2.X在写法上有一些区别,所以编译不成功),因之前接触的都是2.X版本的写法所以就绕道至2.x版本了。

到这步的时候,我们的spm编译工具就能用了。

4. Seajs怎么用

主要是代码外层有一些规则,具体写法和目前js书写方法一致,我就根据我们项目应用上来做一个demo,来一步一步说说怎么用的吧。

? 框架搭建

1.项目框架还是采用前端一般的文件夹路径,如下图:

2.把我们需要使用的seajs文件引入,,从第三步我们下载下来的module中拷贝过来就行的,如下图:

3.Seajs文件路径格式(分为模块和源文件即[sea-modules和static]),模块不需要我们写,但如果引用外部的JS则需要手动加入,具体结构件上图,在js文件夹下建立static文件夹,用来装源文件js,也就是我们写的js文件,我们也先建立demo文件夹用来区分不同的JS模块,在demo目录下需要有src文件夹,即源文件,和package.json,如下图:

4.编写我们需要的代码文件:

Src里面放我们写的js文件,我这里写的是demo.js,代码如下:

/**

*demo

*/

define(function(require,exports,module){

/**

* 构造函数

*/

function PolicyIntlAdd(paramA,paramB,paramC){

this.functionA();

}

/**

* 定义需要用到的方法

*/

/**

*demo

*/

define(function(require,exports,module){

/**

* 构造函数

*/

function Demo(paramA,paramB,paramC){

this.functionA();

}

/**

* 定义需要用到的方法

*/

Demo.prototype={

//初始化方法

functionA:function(){

alert(‘this is a demo!‘);

},

//提交方法

functionB:function(){

//to do songmeing...

}

};

module.exports=Demo;

});

我在里面写了一句alert方法打印出一些信息,packa.json里面内容:

{

"family": "demo",

"name": "demo",

"version": "1.0.0",

"description": "demo",

"author": "manager@bluesnowsoft.com",

"spm":

{

"alias":{

},

"output": ["demo.js"]

}

}

不要问我为什么这样写,我们将在第二弹给你想要的解释.

下面就是把我们写的js编译一次了,首先cmd进入src的目录运行spm build,如下图:

编译完成后,目录下会多一个dist文件夹:

在来我们就是要install我们编译的js文件了。

还是在cmd这个路径下,运行 spm install . -d ../../sea-modules/seajs,结果:

现在我们去js/sea-modules/seajs里面看看:

就多了demo这个模块了,再看看里面的东西:

现在我们就来写根目录下的demo.html,我的代码这样写的:

<html>

<head>

<title>demo</title>

</head>

<body>

</body>

<script type="text/javascript"  src="js/sea-modules/seajs/sea.js"></script>

<script type="text/javascript"  src="js/sea-modules/seajs/seajs-style.js"></script>

<script>

seajs.use([‘demo/demo/1.0.0/demo‘],function(Demo){

var demo = new Demo(null,null,null);

});

</script>

</html>

打开demo.html,运行结果为:

5. 结语

在本step by step中只简单介绍了SeaJs和他的初步应用,可能看似有些复杂,但是这种模块化的思想,对我们大型项目的前端是很有帮助的,我们将在下一季更加深入的介绍SeaJs,敬请期待。

我的前端之旅--SeaJs基础和spm编译工具运用[图文]

标签:seajs   nodejs   npm   spm   js

原文:http://blog.csdn.net/blue_rem/article/details/41891573

更多开发分享请访问:http://www.javarecord.com/

我的前端之旅--SeaJs基础和spm编译工具运用[图文]的更多相关文章

  1. Webpack的作用(一个基础的打包编译工具在做什么?)

    结论: 转换ES6语法成ES5 处理模块加载依赖 生成一个可以在浏览器加载执行的 js 文件 第一个问题,转换语法,其实我们可以通过babel来做.核心步骤也就是: 通过babylon生成AST 通过 ...

  2. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  3. 前端利器:SASS基础与Compass入门

    SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让css看起来更像是一门语言,这种特性也被称为“cs ...

  4. [转]前端利器:SASS基础与Compass入门

    [转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...

  5. Koala – 开源的前端预处理器语言图形编译工具

    koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...

  6. c语言学习基础:[1]开发工具介绍

    标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...

  7. 老李分享: 并行计算基础&编程模型与工具 1

    老李分享: 并行计算基础&编程模型与工具   在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如 ...

  8. 关于Linux开源项目基础组件make编译流程

     关于Linux开源项目基础组件make编译流程 非常多Linux开源项目都会用到编译出可运行文件的make.这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia. ...

  9. python渗透测试入门——基础的网络编程工具

    <Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...

随机推荐

  1. 兔子--R.java丢失原因及解决的方法

    R.jar丢失原因: a:eclipse指向的adk路径有中文,或者是workspace路径有中文 b:xml文件里有错误或者引用的资源不存在 c:xml或者drawable下资源文件不能够有大写字母 ...

  2. cocos2d-x 3.0正式版 环境搭建 (解决载入失败,未能载入XXX包)

    cocos2d-x 3.0正式版最终公布了~ 等了好久~ 废话不多说,直接写方法. 1.下载安装vc2012 ,我用的是旗舰版,传送门:点击打开链接 2.下载cocos2d-x 3.0正式版,传送门: ...

  3. Unity3d + NGUI 多分辨率适应

    更多型号适合的移动终端 现在我们要介绍的<链战争>游戏改编方法,这种适应方法UI这是一个基本维度,背景是一个基本的尺寸.背景比UI没有实际影响某一部分的额外部分,这样就避免了适应iPhon ...

  4. HDU 1242 rescue and 优先级队列的条目

    Problem Description Angel was caught by the MOLIGPY! He was put in prison by Moligpy. The prison is ...

  5. Data Types in the Kernel &lt;LDD3 学习笔记&gt;

    Data Types in the Kernel Use of Standard C Types /* * datasize.c -- print the size of common data it ...

  6. [MySQL 5.6] 初识5.6的optimizer trace

      在MySQL5.6中,支持将执行的SQL的查询计划树记录下来,目前来看,即使对于非常简单的查询,也会打印出冗长的查询计划,看起来似乎不是很可读,不过对于一个经验丰富,对查询计划的生成过程比较了解的 ...

  7. JAVA的程序代码小细节,变量的使用,以及一些细节的面试题

    package cn.hncu; public class LableDemo { public static void main(String[] args) { //demo1(); demo2( ...

  8. hdu2044java递推

    一只小蜜蜂... Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  9. JavaScript 开发规范要求详解

    作为一名开发人员(We前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题.本人在开发工作中就曾与不按规范来开发的同 ...

  10. Codeforces Round #310 (Div. 2)--A(简单题)

    http://codeforces.com/problemset/problem/556/A 题意:给一个01字符串,把所有相邻的0和1去掉,问还剩下几个0和1. 题解:统计所有的0有多少个,1有多少 ...