angular的require模块开发部分步骤内容

angular利用require.js和nodejs的一个模块式开发部分步骤小结:

第一部分:Node.js的下载,npm的安装,http服务的使用

1、下载并安装 node.js

2、工作目录下写一个package.json
文件内容:
“scripts”: {
“start”: “http-server -a 0.0.0.0 -p 8000”,
}
-p 端口号 (默认 8080)

-a IP 地址 (默认 0.0.0.0)

3、开始菜单搜索的地方,输入 cmd

4、访问上一级目录 cd..

5、一级一级进入package.json所在文件夹 cd 文件名
例如: d: 进入d盘
cd www 进入d盘中的www文件夹

一次性进入package.json所在文件夹
例如: d: 进入d盘
cd 用户目录\我的文档\HBuilderProject\Angularjs

6、配置node.js的http服务
npm install http-server (安装)
npm install -g http-server (全局安装加 -g)

npm NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,
常见的使用场景有以下几种:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
install 安装
-g 全局
http-server 一个简单的零配置命令行HTTP服务器, 基于 nodeJs.

7、开启http服务 http-server
注意:需要进入你要打开的文件夹内(在站点目录下) 在打开cmd输入http-server 否则打开127.0.0.1:8080 会进入 Index of / 的界面中,得一级级查找文件地址

8、访问: http://localhost:8080 or http://127.0.0.1:8080
注意:cmd要全程开启,http服务才生效,关闭cmd http服务关闭

-d 显示目录列表 (默认 ‘True‘)

-i 显示 autoIndex (默认 ‘True‘)

-e or --ext 如果没有提供默认的文件扩展名(默认 ‘html‘)

-s or --silent 禁止日志信息输出

--cors 启用 CORS via the Access-Control-Allow-Origin header

-o 在开始服务后打开浏览器
-c 为 cache-control max-age header 设置Cache time(秒) , e.g. -c10 for 10 seconds (defaults to ‘3600‘). 禁用 caching, 则使用 -c-1.
-U 或 --utc 使用UTC time 格式化log消息

-P or --proxy Proxies all requests which can‘t be resolved locally to the given url. e.g.: -P http://someurl.com

-S or --ssl 启用 https

-C or --cert ssl cert 文件路径 (default: cert.pem)

-K or --key Path to ssl key file (default: key.pem).

-r or --robots Provide a /robots.txt (whose content defaults to ‘User-agent: *\nDisallow: /‘)

第二部分:require的配置和使用

一、require的配置
1.在index.html中引入 require插件
2.data-main 指向 入口文件 main.js
3.首先对require 进行文件配置 路径配置
不符合amd规范的插件配置
使用require进行模块调用 ,模块调用里边手动添加app
4.定义app的模块
5.定义路由表信息
a.index.html 添加 ng-view
b.使用路由服务 添加路由信息,模板信息、控制器信息
c.添加模板文件

d.添加控制器文件(要在main文件中配置并且依赖注入)
e.没有的页面要跳转到首页

新添加模块的方法:
1.在路由表中添加一个模块的路由信息
//xq模块
.when(‘/xq‘,{
templateUrl:"js/views/wd/xq.html",
controller:"wdxqCtrl"
})
2.新建 模板文件
3.新建 控制器文件
4.在main文件中添加 控制器文件,并且依赖注入
注意: 一定要在服务器环境下运行
要及时刷新、清除缓存

二、使用require时, js执行顺序
1,加载require.js
2,加载data-main main.js
3,main.js ---> config.js
4,main.js ---> demo.js
5,执行回到函数
6,define([‘a‘,‘b‘,‘c‘],function(a,b,c){}); a b c是异步加载,无关顺序
(define 定义一个模块,require 加载一个模块)

三、具体步骤:
1.在index.html中引入 require插件
2.data-main 指向 入口文件 main.js
例如:
<script src="js/libs/require.js" data-main="js/main" ></script>

3.main.js中的内容
1)首先对 require 进行文件配置 路径配置
格式:require.config({}); 键值对格式书写
例如:

 1 require.config({        //config  配置    RequireJS的模块语法允许它尽快地加载多个模块,虽然加载的顺序不定,但依赖的顺序最终是正确的。
 2     baseUrl:"js/",  //baseUrl 主路径
 3     paths:{         //paths  设置短路径   包括插件,路由,主模块,自定义控制器,自定义指令,自定义服务,自定义过滤器等所有要依赖注入的js文件
 4          "jquery":"libs/jquery203",     //"ID":"文件夹/文件名",按顺序引用,
 5          "angular":"libs/angular.min",  //angular和angular的插件的文件版本必须一致,否则会报错
 6          "angular-route":"libs/angular-route.min"
 7     },
 8     shim:{       //shim  定义非amd模块和定义依赖关系
 9          "angular":{
10           exports:"angular"    //exports  让文件符合规范
11           },
12          "angular-route":{
13           deps:["angular"],    //deps   定义依赖模块
14           exports:"angular-route"
15          }
16     }
17 });

2)require 调用模块
格式:require([name , name2],callback); //这里的name就是ID,require 和 define 的 name 必须保证一致! 依赖注入顺序没有影响,但最好还是按顺序依赖注入
例如:

1 require(["jquery","angular","angular-route"],function($,angular){  // 需要使用的模块以参数的形式进行调用($,angular) 等价于 ($angular,$angular-route) $系统符
2     angular.bootstrap(document,["myApp"]); //bootstrap 初始化模块    myApp自定义的模块名
3 });

依赖注入的简单理解:就是在js内调用外部js文件
作用相当于:在html中调用外部文件<script src="js/angular.js"></script>
而在js中我们写成["angular"]

4.app.js中的内容
定义app模块
格式:define(name,[] , callback); 这个name可以省掉,默认是文件名称;define函数内部其实就是把这个name以及依赖模块、回调函数作为一个对象存储在全局的数组当中,
也就是 defQueue.push([name,deps,callback]);这个name就是这个组件注册的的ID!
例子:

define(["angular"],function(angular){
    var app = angular.module("myApp",["angular插件ID"]);
    return app;     //callback
});

5.route.js中的内容
定义路由
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){      //挂载在模块app下
 2     return app.config(["$routeProvider",function($routeProvider){
 3         $routeProvider
 4         .when("/",{       //  /hash值 作用:锚点  输入127.0.0.1:8080/#/hash值 可以打开/hash 的页面
 5             templateUrl:"js/views/web/web.html",
 6             controller:"webCtrl"
 7         })
 8         .when("/webdetails/:num",{            // :num  用JsonP拿取数据的时候:num是后台数据的id  打开地址127.0.0.1:8080/#/hash值/id
 9             templateUrl:"js/views/webDetails/webDetails.html",
10             controller:"webdetailsCtrl"
11         })
12         //重定向页面  让页面初始和查找不到页面时候跳转到定向的页面
13         .otherwise({
14             redirectTo:"/"
15         })
16     }]);
17 });

扩展:跨域访问服务器数据
参数的传递:
1)html页面 传递页码 <a href="/#/webdetails/{{$index+1}}"></a>
2)路由页面修改路由信息 :num "/webdetails/:num"
3) 在控制器页面 使用 $routeParams 来进行接收
4)将json文件替换成后台接口数据的使用方式:
$http.jsonp("http://192.168.2.105/data/getWdData.php?id=" + $routeParams.num + "&callback=JSON_CALLBACK").
5)对于接口调用:首先要判断接口是否连通,直接输入http://192.168.2.105/data/getWdData.php?id= 进行测试

6.自定义控制器
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){
 2     app.controller("myController",["$scope","$rootScope","$http",function($scope,$rootScope,$http){    //myController 自定义控制器名
 3         $rootScope.headTitle = "营业网点";
 4         $rootScope.collect = true; //该页面是否显示收藏按钮   自定义变量
 5
 6         //get获取后台数据
 7         $http.get("json/yywd.json").success(function(data){    //注意:一定要注意这里的文件地址是相对于主文件index.html的获取路径,写成对于控制器的路径会报错获取不到文件
 8             $scope.branchs = data.branchs;                 //data后台回调的数据
 9         }).error(function(data){
10             console.log(data);
11         })
12
13         //jsonp获取后台数据
14         $http.jsonp("http://192.168.2.105/data/getWdListData.php?callback=JSON_CALLBACK")     //数据接口?回调数据处理
15         .success(function(data){
16             $scope.branchs = data.branchs;
17         })
18         .error(function(data){
19             console.log(data)
20         })
21     }]);
22 })

扩展:解析后台数据库中的html标签
$sce服务 用于解析从后台数据库文件中获取的html标签

7.自定义指令
格式:define(name,[],callback)
例子:

 1 define(["app"],function(app){
 2     app.directive("backButton",["$window",function($window){    //backButton  自定义指令名   $window依赖注入的服务
 3         return {                        //指令必须  return{}
 4             restrict:"A",                                   //A 指令的调用方式  ECMA分别代表元素,类,注释,属性,其中EA最常用
 5             link:function(scope,elem,attr){
 6                 elem.bind(‘click‘,function(){
 7                     //回退
 8                     $window.history.back();         //$window服务功能的history.back()方法
 9                 });
10             }
11         }
12     }]);
13 })

扩展:1)M调用方式的写法:<!-- directive:指令名 --> 注意:-和数字间要加个空格
2)驼峰写法指令调用:backButton调用时写成 back-button -b会把b转化成大写

时间: 2025-01-05 05:27:39

angular的require模块开发部分步骤内容的相关文章

Nginx模块开发入门(转)

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝内

Nginx模块开发入门

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝内

Nginx模块开发入门(转)

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝内

[转] Nginx模块开发入门

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核 心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝

FW: Nginx模块开发入门

前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Nginx在高并发情况下具有巨大的性能优势. Nginx属于典型的微内核设计,其内核非常简洁和优雅,同时具有非常高的可扩展性.Nginx最初仅仅主要被用于做反向代理,后来随着HTTP核心的成熟和各种HTTP扩展模块的丰富,Nginx越来越多被用来取代Apache而单独承担HTTP Server的责任,例如目前淘宝内

Java开发工具安装步骤内容如下

Java开发工具安装步骤内容如下 安装 开发工具 STS 链接下载网址 eclipse 链接下载网址 JDK安装 jdk链接下载地址 Marven环境 marven链接下载地址 Tomcat tomcat链接下载地址 jboss下载链接地址 以上文件下载完成后,将JDK安装,安装完成后,进行配置. 找到我的电脑,右键属性,选择高级系统设置,会有一个弹出框弹出,然后选择本机用户的用户变量进行配置. 新建环境变量, JAVA_HOME,内容是安装的jkd的地址. 如图:  变量名:JAVA_HOME

linux下nginx模块开发入门

本文模块编写参考http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html 之前讲了nginx的安装,算是对nginx有了最初步的了解,在配置完之后,我们就可以进行简单的nginx模块开发了. 下面本文展示一个简单的Nginx模块开发全过程,我们开发一个叫echo的handler模块,这个模块功能非常简单,它接收“echo”指令,指令可指定一个字符串参数,模块会输出这个字符串作为HTTP响应.例如,对ngi

opencart 模块开发详解

opencart 模块开发详解 由 xiekanxiyang » 2013年 7月 11日 10:17 pm opencart 将页面分成若干模块, 每个模块可以有多个实例(可能这样说不是很恰当) 每个实例可以指定它出现在哪个页面 这样更好的实现了代码的可重用性,可以达到更好的页面布局的可调节性. Opencar内置了几个模块,但实际应用中我们经常要根据需要开发自己模块,现在我给大家介绍下opencart的模块开发的细节 开发步骤:首先:模块代码也分前台,后台. 后台功能是模块的安装,编辑,模块

nodejs cheerio模块提取html页面内容

nodejs cheerio模块提取html页面内容 Table of Contents 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终代码 本文给出使用一个用cheerio模块提取html文件中指定内容的例子,并说明具体步骤.涉及到的API.以及其它模块. cheerio模块是一个类似jquery的模块,具有相似的API.功能,能够将一个网页解析为DOM,以及通过selector选择元素,设置.