1130分享总结

来源:互联网 发布:宠物店网络信息平台 编辑:程序博客网 时间:2024/05/05 03:28

1、 ui-sref-active只对同级路由有效
2、 Filter只能过滤数组
3、 ng-switch-when

    <element ng-switch="expression">         <element ng-switch-when="value"></element>         <element ng-switch-when="value"></element>         <element ng-switch-when="value"></element>         <element ng-switch-default></element>    </element>

4、 ng-src=”{{item.imgSrc||\’assets/img/barBg.png\’}}”

    src="{{vm.url}}"第一次加载模板的时候就会去请求图片    加花括号的原因    attr.$observe('ng-src',function(value){        attr.$set(name, value);        })    延伸:$observe和$watch的区别        $watch更复杂一点,它可以监视表达式,这个表达式可以是函数或者字符串      $observe异步解析、仅用在指令内部

5、 package.json

  • name(必填)
    • 不要在name中包含js, node字样;
    • 这个名字最终会是URL的一部分,命令行的参数,目录名,所以不能以点号或下划线开头;
    • 这个名字可能在require()方法中被调用,所以应该尽可能短;
    • 包名必须唯一
  • version(必填)
  • description(可选)
  • keywords(可选)
  • homepage(可选)

        不带网络协议的url 
  • bugs(可选)

        问题追踪系统的url或邮箱地址,用于npm bugs     { "url" :"http://github.com/owner/project/issues",     "email" :"project@hostname.com"    }
  • license(可选)
  • author,contributors(可选)
  • files(可选)

    项目包含的一组文件。如果是文件夹,文件夹下的文件也会被包含。如果需要把某些文件不包含在项目中,添加一个”.npmignore”文件。这个文件和”gitignore”类似
  • main(可选)

    这个字段的值是你程序主入口模块的ID。如果其他用户需要你的包,当用户调用require()方法时,返回的就是这个模块的导出(exports)。
  • bin(可选)

    很多的包都会有执行文件需要安装到PATH中去。这个字段对应的是一个Map,每个元素对应一个{ 命令名:文件名 }。{ "bin" : { "npm" : "./cli.js" } }
  • directories(可选)

    用于指示包的目录结构:
  • directories.lib(可选)

    指示库文件的位置。
  • directories.lib(可选)

    和前面的bin是一样的,但如果前面已经有bin,那么这个就无效。除了以上两个,还有Directories.doc& Directories.man & Directories.example。
  • repository(可选)

    用于指示代码存放的位置。"repository" :  { "type" : "git"  , "url" : "http://github.com/npm/npm.git"  }"repository" :  { "type" : "svn"  , "url" : "http://v8.googlecode.com/svn/trunk/"  }对象类型,Key是生命周期事件名,value是在事件点要跑的命令。参考npm-scripts。
  • config(可选)

    对象类型对象中的值在Scripts的整个周期中皆可用,专门用于给Scripts提供配置参数。
  • dependencies(可选)

    指示当前包所依赖的其他包。{ "dependencies" :      { "foo" : "1.0.0 - 2.9999.9999"      , "bar" : ">=1.0.2 <2.1.2"      , "baz" : ">1.0.2 <=2.3.4"      , "boo" : "2.0.1"      , "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"      , "asd" : "http://asdf.com/asdf.tar.gz"      , "til" : "~1.2"      , "elf" : "~1.2.3"      , "two" : "2.x"      , "thr" : "3.3.x"      }}版本格式可以是下面任一种:        version 完全匹配        >version 大于这个版本        >=version大于或等于这个版本        <version        <=version        ~version 非常接近这个版本        ^version 与当前版本兼容    1.2.x X代表任意数字,因此1.2.1, 1.2.3等都可以    http://... Unix系统下使用的tarball的URL。    * 任何版本都可以    ""任何版本都可以    version1 - version2  等价于 >=version1 <=version2.    range1 || range2 满足任意一个即可    git... Git地址    user/repo
  • devDependencies(可选)

    如果只需要下载使用某些模块,而不下载这些模块的测试和文档框架,放在这个下面比较不错。
  • peerDependencies(可选)

    兼容性依赖。如果你的包是插件,适合这种方式。
  • bundledDependencies(可选)

    发布包时同时打包的其他依赖。
  • optionalDependencies(可选)

    如果你想在某些依赖即使没有找到,或则安装失败的情况下,npm都继续执行。那么这些依赖适合放在这里。
  • engines(可选)

    既可以指定node版本:{ "engines" : {"node" : ">=0.10.3 <0.12" } }也可以指定npm版本:{ "engines" : {"npm" : "~1.0.20" } }
  • engineStrick(可选)

    布尔值。如果你肯定你的程序只能在制定的engine上运行,设置为true。
  • Os(可选)

    指定模块可以在什么操作系统上运行:"os" : [ "darwin","linux" ]"os" : [ "!win32" ]
  • CPU(可选)

    指定CPU型号。"cpu" : [ "x64","ia32" ]"cpu" : [ "!arm","!mips" ]
  • preferGlobal(可选)

    布尔值。如果你的包是个命令行应用程序,需要全局安装,就可以设为true。
  • private(可选)

    布尔值。如果private为true,npm会拒绝发布。这可以防止私有repositories不小心被发布出去。
  • publishConfig(可选)

    发布时使用的配置值放这。默认值"scripts":{"start": "node server.js"}如果你的包里有server.js文件,npm默认将执行: node server.js."scripts":{"preinstall":"node-gyp rebuild"}如果包里有binding.gyp,npm默认在安装本地文件系统中指定的目录包含的模块preinstall命令时,使用node-gyp做编译。

    6、 npm命令

    npm -v 查看npm版本npm install XX -g 全局安装  根据bin文件的express来配置,统安装在某个目录npm install <tarball file>本地文件npm install <tarball url> 远程文件npm install <folder> 安装本地文件系统中指定的目录包含的模块npm install <name> [–save|–save-dev|–save-optional]安装并更新package.json中的版本配置    -save 安装package.json的dependencies选项中的模块    -save-dev 安装package.json的devDependencies选项中的模块    -save-optional安装package.json的optionalDependencies选项中的模块 npm install <name>@<tag>指定安装模块的config的tag的版本 npm install <name>@<version>安装模块的指定版本 npm install <name>@<version range>     如npm install async@">=0.2.0 <0.2.9"-force 强制拉取远程资源,即使本地已经安装这个模块设置代理:npm config set proxy=http://proxy.tencent.com:8080设置npm的镜像地址npm config set registry http://npm.oa.com获取npm配置npm config get <key>删除npm配置npm config delete <key>执行脚本npm start [<name>]npm stop [<name>]npm test [<name>]……运行start时,对应的脚本为package.json文件中scripts的start字段中

7、 练习

已知数组var =[1,2,3,5,6,7,8,1,6,4,2,a,1,b,c,d,e,b,c,a,a,b,0]请至少使用2+种方法输出,每个元素重复的个数.
var arr=[1,2,3,5,6,7,8,1,6,4,2,'a',1,'b','c','d','e','b','c','a','a','b',0];//method1    var tmpArr=[];    function filterArr(lastVal){        for(var i=0;i<arr.length;i++){            if(tmpArr[arr[i]]){                tmpArr[arr[i]]++;            }else{                tmpArr[arr[i]]=1;            }        }    }    filterArr(arr[0]);    console.log(tmpArr);    //method2    var tmpArr = [];    function filterArr(n){        if(n<=arr.length-1){            if(tmpArr[arr[n]]){                tmpArr[arr[n]]++;            }else{                tmpArr[arr[n]]=1;            }            filterArr(n+1);            return 1;        }    }    filterArr(0);    console.log(tmpArr);

8、链接

node.js的web框架
web notifications应用文档
ionic模态窗口
js的排序算法

9、nginx配置

    nginx.conf文件中,Nginx中有少数的几个高级配置在模块部分之上。    user www-data;    pid /var/run/nginx.pid;    worker_processes auto;    worker_rlimit_nofile 100000;    Events模块    events模块中包含nginx中所有处理连接的设置。    events {    worker_connections 2048;    multi_accept on;    use epoll;    worker_connections设置可由一个worker进程同时打开的最大连接数。如果设置了上面提到的worker_rlimit_nofile,我们可以将这个值设得很高。

10、angular方面&ES6

  • angularjs不同页面间参数的传递

    • 在路由中定义要接收的参数

      .state('userDetails', {    url: '/userDetails?phone',    //以?为标识接收参数    templateUrl: 'assets/views/userDetails.html',    controller:'userDetailsController'  //也可以用 params:{'phone':{}} })
    • 在控制器中传递参数

      .controller('pageOneCtrl', function ($scope, $state) {    $scope.toPage2 = function () {               $state.go('page2', {phone:$scope.num});          };     });
    • 通过$stateParams获得参数phone

      myRouterApp.controller('userDetailsController',function($scope,$stateParams){    console.log($stateParams.phone);    });
    • 如果要传递多个参数,则用对象的形式传递

          (1)在app.js中定义路由信息,并在接收的页面(即page2.html)定义接收参数。    .state('page1', {          url: '/page1',          templateUrl: 'templates/page1.html',          controller: 'pageOneCtrl'     })     .state('page2', {          url: '/page2',         templateUrl: 'templates/page2.html',         controller: 'pageTwoCtrl' ,         params:{args:{}}    })    (2)在page1中定义点击事件。    html中:    ng-click=“toPage2(name,number)”    控制器中:        .controller('pageOneCtrl', function ($scope, $state) {                 $scope.toPage2 = function (name,number) {                          $state.go('page2', {                             args:{                              NAME:name,                              NUMBER:number                         });                  };         });    (3)在Page2中通过$stateParams获得参数ID。    .controller('pageTwoCtrl’, function ($scope, $state, $stateParams) {           var receivedName = $stateParams.args.NAME;           var receivedNumber = $stateParams.args.NUMBER;    });
  • ES6 标准部分应用

    • 多行字符串

      字符串换行时,不再使用\n,而是使用倒引号`..`,例如:    1    2    3   alert(`这是一个    多行    字符串`);
    • 模版字符串

       不再使用“+”来拼接字符串与变量,而是使用倒引号`..`与${}结合,用${}将变量包含起来,例如     var name = '小明';     var age = 20;     alert(`name:${name},age:${age}`); 
    • Map

      以键值对的结构存在,可以用get方法获取某属性值,用set方法设置或添加属性值     var s = new Map([['name','lmy'],['age',20],['sex','female']]);     alert(s.get('age'));     s.set('grade',4);     alert(s.get('grade'));
    • Set

          一组key的集合,没有value值,会自动过滤重复的值,不能用下标遍历    var a = new Set([1,2,3,3,'3']);    console.log(a);   //1,2,3,'3'    a.add(4);    console.log(a);  //1,2,3,'3',4
    • forEach

          接收一个函数,每次迭代回调该函数,此函数接收三个参数    var a = ['A', 'B', 'C'];    var s = new Set(['A', 'B', 'C']);    var m = new Map([['name', 'x'], ['age', 'y'], ['grade', 'z']]);    a.forEach(function (element, index, array) {     // element: 指向当前元素的值 // index: 指向当前索引 // array: 指向Array对象本身      alert(element);    });    a为数组,element为当前元素,index为元素下标,array为数组全部数值    s为Set类型,没有下标,所以element与index返回的均为当前元素,array返回Set类型的对象    m为Map类型,element为当前元素的值,index为当前元素的键,array为Map类型的对象

11、RegExp 对象表示正则表达式.

  • 语法:

    1.字面量表示法    var reg = /d+/i; 2.实例化RegExp对象    var reg = new RegExp( “d+”, “igm” );
  • 常用方法:

    1、exec( ) 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。2、test( ) 方法比 exec( ) 方法简单,该方法只会返回一个Boolean值,如果匹配成功,则返回true,否则,返回false。
  • 非打印字符:

    \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。\f  匹配一个换页符。等价于 \x0c 和 \cL。\n  匹配一个换行符。等价于 \x0a 和 \cJ。\r  匹配一个回车符。等价于 \x0d 和 \cM。\s  匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。\S  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。\t  匹配一个制表符。等价于 \x09 和 \cI。\v  匹配一个垂直制表符。等价于 \x0b 和 \cK。
  • 特殊字符:

    $   匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。*   匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。+   匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。.   匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。[   标记一个中括号表达式的开始。要匹配 [,请使用 \[。?   匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。\   将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。^   匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。{   标记限定符表达式的开始。要匹配 {,请使用 \{。|   指明两项之间的一个选择。要匹配 |,请使用 |。
  • 限定符:

    {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。{n,}    n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。{n,m}   m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
  • 定位符:

    \b  匹配一个字边界,即字与空格间的位置。\B  非字边界匹配。  
0 0
原创粉丝点击