zoukankan      html  css  js  c++  java
  • 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 用户目录我的文档HBuilderProjectAngularjs

    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: * Disallow: /')

    第二部分: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转化成大写

  • 相关阅读:
    【django后端分离】Django Rest Framework之一般配置(简单剖析)
    【python小随笔】celery周期任务(简单原理)
    【django后端分离】mysql原生查询命令后,RawQueryset类型的自定义序列化返回json格式
    【python小随笔】Django+错误日志(配置Django报错文件指定位置)
    luogu P3194 [HNOI2008]水平可见直线 |单调栈
    luogu P6247 [SDOI2012]最近最远点对 |随机化
    luogu P3567 [POI2014]KUR-Couriers |莫队+随机化
    P6569 [NOI Online #3 提高组]魔法值| 矩阵乘法
    luogu P1452 【模板】旋转卡壳
    luogu P3829 [SHOI2012]信用卡凸包 |凸包
  • 原文地址:https://www.cnblogs.com/ly-blogs/p/6580044.html
Copyright © 2011-2022 走看看