前端框架错题总结

    技术2022-07-10  121

    1. 因为JSX的特性更接近JavaScript而不是HTML,所以React DOM使用camelCase(小驼峰)命名来定义属性的名称,而不是使用HTML的属性名称。例如:class变成了className,而tabindex则对应着tableIndex

    2. 在jsx中直接写行内样式时不能采用引号,而是style={{color:'red'}}的方式

    3. Angular大大减少了对DOM的访问。

        jQuery极大的丰富了DOM操作

    4. 依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。

    5.

    class浏览器打印机.visible-print-block .visible-print-inline .visible-print-inline-block隐藏可见.hidden-print可见隐藏

     6. ‘Promise 对象代表一个异步操作,有3种状态:Pending(进行中)、Resolved(已完成,又称Fulfilled)和Rejected(已完成)’。

    7. 只能输入零/非零开头的数字 ^ 以。。。开头,$以。。。结尾。 *任意多次 |或的意思 ()组 []集合

    8. angularjs1中的$apply()的作用是:

    $apply 是为了让angularJS内部没有在$digest状态当中的代码块进入到$digest当中,从而实现双向数据绑定。

    所谓$digest就是angularjs 检测数据更新的方式。

    例如setTimeout这类延迟函数angularjs不会去去自动运行$digest来绑定数据,从而无法实现其效果(仅是双向数据绑定效果)

    一般安全使用方法:

    if($scope.$$phase){  //返回$digest状态

        $scope.$apply

    }

    9. AngularJS1元素过滤的正确写法

    filter的两种使用方法 1. 在模板中使用filter 我们可以直接在{{}}中使用filter,跟在表达式后面用 | 分割,语法如下: {{ expression | filter }} 也可以多个filter连用,上一个filter的输出将作为下一个filter的输入 {{ expression | filter1 | filter2 | ... }} filter可以接收参数,参数用 : 进行分割,如下: {{ expression | filter:argument1:argument2:... }} 除了对{{}}中的数据进行格式化,我们还可以在指令中使用filter,例如先对数组array进行过滤处理,然后再循环输出: <span ng-repeat="a in array | filter "> 2. 在controller和service中使用filter 我们的js代码中也可以使用过滤器,方式就是我们熟悉的依赖注入,例如我要在controller中使用currency过滤器,只需将它注入到该controller中即可,代码如下: app.controller('testC',function($scope,currencyFilter){     $scope.num = currencyFilter(123534);  } 在模板中使用{{num}}就可以直接输出 $123,534.00了!在服务中使用filter也是同样的道理。 ng提供了一个$filter服务可以来调用所需的filter,你只需注入一个$filter就够了,使用方法如下: app.controller('testC',function($scope,$filter){     $scope.num = $filter('currency')(123534); $scope.date = $filter('date')(new Date());  }

    10. ES6的新feature:

    function*声明 (function关键字后跟一个星号)定义了一个 生成器函数 ( generator function ),它返回一个  Generator  对象。

    也可以定义  生成器函数  使用构造函数  GeneratorFunction 和一个  function* expression

    11. es6中将构造方法的function换成了class,用于与普通函数区分,其中的属性都放在constructor中,方法在原型中,子类继承采用extends关键字;对于es6中枚举的使用,只能是以类的方式定义枚举类,不能直接使用enum关键字

    12. jQuery中

    alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height()); //浏览器当前窗口文档的高度 alert($(document.body).height());//浏览器当前窗口文档body的高度 alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin alert($(window).width()); //浏览器当前窗口可视区域宽度 alert($(document).width());//浏览器当前窗口文档对象宽度 alert($(document.body).width());//浏览器当前窗口文档body的高度 alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin

    13. 几种常见的高级选择器

    1后代选择器  a b{}  用空格隔开    选中a的后代中的b(后代指后面很多代)元素

    2子代选择器  a>b{}  用箭头隔开    选中a的子代中的b(子代指下一代)元素

    3并集选择器  a,b{}  用逗号隔开     选中满足a或者b的元素

    4交集选择器  ab{}   没有分隔符     选中同时满足a和b的元素

    a,b可以是类选择器,标签选择器,id选择器

     

     

    14. angular

    直接使用{{value}}绑定变量,会因为加载先后顺序,出现闪屏的现象,官方建议使用ng-bing

    ng-bind=”value“ 直接把变量绑定在标签上,当超过一定数量时,会出现性能问题

    ng-bind="obj.value",官方建议把对象的属性绑定在视图上,其次才是对象本身

    ng-model属于双向绑定 用于Input的输入值和变量绑定起来,不能绑定在div等标签上

    angular 指令的link函数中进行dom操作和事件绑定,服务主要是封装与后台交互的数据接口提供复用性

     

     

    Processed: 0.009, SQL: 9