1130分享总结

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值