小知识

作者: J_L_L | 来源:发表于2017-03-16 19:44 被阅读0次

    github pages

    在setting里面有github pages这一栏,选择分支,就会出现链接

    移动端rem适配(http://www.cnblogs.com/zhangwenkan/p/5775357.html)

    原理:给html根节点设置一个基础font-size值,然后页面的所有元素布局均相对于该font-size值采用rem单位设定。font-size的取值通过js计算。

    但字体不用rem单位,原因如下:

    1.设计师要求:任何手机屏幕上字体大小都要统一

    2.显然,我们在iPhone3G和iPhone4的Retina屏下面,希望看到的文本字号是相同的。也就是说,我们不希望文本在Retina屏幕下变小,另外,我们希望在大屏手机上看到更多文本,以及,现在绝大多数的字体文件都自带一些点阵尺寸,通常是16px和24px,所以我们不希望出现13px和15px这样的奇葩尺寸。

    3.有一种叫做点阵字体的存在(什么是点阵字体),也叫作位图字体,位图我们都知道,跟矢量图是有区别的,就是放大会模糊,所以点阵字体也是放大会模糊的,如果根据rem设置字体大小,字体会自由缩放,可能就会导致点阵字体模糊,所以需要设定使用几种固定大小的字体。(不过,在正常情况下,系统自带的字体都是矢量字体,所以使用rem为单位是没有问题的,除非你的网页需要用到特殊的点阵字体。)

    angularjs 关于src和ng-src的区别,ng-src="{{}}"里面为什么要用中括号?

    简单的说:
    1、资源url是个常量,那么就用src,没毛病;
    2、资源url是个(包含)变量,那么就用ng-src + {{}},可以规避第一次请求404的问题。

    href="#"与href="javascript:void(0)"的区别

    “#” 包含了一个位置信息,默认的锚是#top 也就是网页的上端。
    而javascript:void(0), 仅仅表示一个死链接。
    在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。
    如果你要定义一个死链接请使用 javascript:void(0) 。

    自执行函数(不污染全局)

    (function(window){})(window)

    window.location对象

    监听网址的变化

      (function(window) {
      window.addEventListener('hashchange', function(e) {
        var hash = window.location.hash;
        switch (hash) {
          case '#/index/':
            console.log('请求index');
            break;
          case '#/demo/':
            console.log('demo');
            break;
          case '#/aaa/':
            console.log('aaa');
            break;
        }
        // console.log(11111);
        // console.log(e);
        // hash 属于路径(URL)的组成
        // console.log(window.location);
        // 可以通过 window.location 拿到所有信息
        // https://www.baidu.com:8080/aaa/1.html?id=10#name
        //
        // protocol: https
        // host: www.baidu.com:8080
        // hostname: www.baidu.com
        // port: 8080
        // pathname: /aaa/1.html
        // search: ?id=10
        // hash: #name
      });
    })(window);
    

    通过自定义指令访问DOM: 对于Angular,一个程序中唯一允许接触DOM的地方就是“指令”。之所以这样要求,是因为需要访问DOM的代码难以进行自动化测试。 如果你需要直接访问DOM,那么你就应该为此写一个自定义指令。在 指令指南一章中详细解释了该怎样实现自定义指令。

    angular指令 用驼峰命名法

    建议使用破折号分隔符的方式(比如ng-bind for ngBind). 如果你想支持HTML验证工具,你可以加前缀data.(比如把ngBind写成data-ng-bind).
    自定义指令时尽量返回一个对象,而不要只返回一个函数

    创建一个能由元素名字触发的指令,你需要用到restrict选项
    选项restrict可以设置成以下方式:
    'A' - 仅匹配属性名
    'E' - 仅匹配元素名
    'AE' - 既匹配属性名又匹配元素名
    下面把例子的restrict选项选项成restrict: 'E'。

    创建一个操作DOM的指令

    在这个例子中,我们会创建一个显示当前时间的指令,每秒一次更新DOM以正确的显示当前的时间。
    指令修改DOM通常是在link选项中,link选项接受一个带有如下签名的函数function link(scope,element,attrs) {...} 其中: scope 是一个Angular的scope对象. element 指令匹配的jqLite封装的元素(angular内部实现的类jquery的库) * attrs 是一个带有规范化后属性名字和相应值的对象.
    在我们的link 函数中,我们每秒更新一次显示时间,当用户改变绑定的时间格式字符串的时候也会更新。 当指令被删除的时候,我们也要移除定时器,以避免引入内存泄露。

    我该什么时候使用$location?

    只要你的应用想更改当前地址,或者你想要修改浏览器的当前地址,就用它吧!

    什么时候不该用它?

    在浏览器地址变化的时候,它不会导致全页面刷新。要想在地址变化之后重载整个页面,请使用底层API$window.location.href。

    ng-bind-html

    ng-bind-html需要引入一个解析HTML的插件

    1 采用ngSanitize插件的形式解析HTML

    1.1 在angularJS的库文件中可以找到

    1.2 也可以到bootcdn上面去下载使用

    当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑。一定要早点意识到,controller 这一层应该很薄;也就是说,应用里大部分的业务逻辑和持久化数据都应该放在 service 里。很多人问道,关于如何在 controller 里保存持久化数据。这就不是 controller 该干的事。出于内存性能的考虑,controller 只在需要的时候才会初始化,一旦不需要就会被抛弃。因此,每次当你切换或刷新页面的时候,Angular 会清空当前的 controller。与此同时,service 可以用来永久保存应用的数据,并且这些数据可以在不同的 controller 之间使用。

    相关文章

      网友评论

          本文标题:小知识

          本文链接:https://www.haomeiwen.com/subject/zuzjnttx.html