我的前端之旅--SeaJs基础和spm编译工具运用[图文]
标签: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编译工具运用[图文]的更多相关文章
- Webpack的作用(一个基础的打包编译工具在做什么?)
结论: 转换ES6语法成ES5 处理模块加载依赖 生成一个可以在浏览器加载执行的 js 文件 第一个问题,转换语法,其实我们可以通过babel来做.核心步骤也就是: 通过babylon生成AST 通过 ...
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- 前端利器:SASS基础与Compass入门
SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让css看起来更像是一门语言,这种特性也被称为“cs ...
- [转]前端利器:SASS基础与Compass入门
[转]前端利器:SASS基础与Compass入门 SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让 ...
- Koala – 开源的前端预处理器语言图形编译工具
koala 是一个前端预处理器语言图形编译工具,支持 Less.Sass.Compass.CoffeeScript,帮助 Web 开发者更高效地使用它们进行开发.跨平台运行,完美兼容 Windows. ...
- c语言学习基础:[1]开发工具介绍
标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...
- 老李分享: 并行计算基础&编程模型与工具 1
老李分享: 并行计算基础&编程模型与工具 在当前计算机应用中,对高速并行计算的需求是广泛的,归纳起来,主要有三种类型的应用需求: 计算密集(Computer-Intensive)型应用,如 ...
- 关于Linux开源项目基础组件make编译流程
关于Linux开源项目基础组件make编译流程 非常多Linux开源项目都会用到编译出可运行文件的make.这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia. ...
- python渗透测试入门——基础的网络编程工具
<Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...
随机推荐
- linux route命令学习
route命令用于显示和操作IP路由表. 没有增加路由之前,route命令的结果如下, sh-# route Kernel IP routing table Destination Gatew ...
- mybatis0202 一对一查询 resultType实现
一对一查询 查询订单信息和用户信息 创建po类 基础的单表的 po(数据库类)类:Items.java, Orderdetail.java, Orders.java, User.java 一对一查询映 ...
- myecipse的debug调试操作方法
在myecipse如果想要查询某个变量的值,或者跟踪程序的执行流程,可以如下操作: 首先在程序中设置好断点(断点的设置方法,就是在想要设置的地方的行首双击,当一个蓝色的圆形实心图标显示出来,就证明你设 ...
- iOS 开发之 ReactiveCocoa(进阶)
Map : 映射 UITextField *textField =[[UITextField alloc]initWithFrame:CGRectMake(100, 100, 100, 40)]; t ...
- AndroidUniversalImageLoader网络图片加载
1.功能概要 Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示. (1).使用多线程加载图片(2) ...
- C++ 读取XML文件(tinyXML库的应用)
C++读取xml有很多第三方的xml解析库,最近使用tinyxml库来解析,下面直接上应用例子: Skin.xml文档内容如下: <UI> <Image name="ban ...
- KALI ssh无法登陆的解决办法
应该是sshd的设置不允许root用户用密码远程登录 修改 vim /etc/ssh/sshd_config 找到# Authentication:LoginGraceTime 120PermitRo ...
- CentOS7使用Redis
使用Python操作Redis 安装pip # yum install python-pip 升级pip # pip install --upgrade pip 安装redis-py库 # pip i ...
- Abstract Factory 抽象工厂模式
提供一个创建一些列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂顾名思义就是对工厂的抽象,它提供了一组创建抽象产品对象的操作接口,我们实际使用的是抽象工厂的派生类,派生类中提供了操作的具 ...
- 复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
一.期末考试成绩班级前十名 宁盛臻(100).朱民哲(92).徐钰伦(86).范凌虎(85).沈伊南(84).何陶然(84).丁知愚(83).焦思邈(83).董瀚泽(82).钱信(81) 二.总成绩计 ...