归档: 2016/3

0

实习招聘面试经历-2

1. Angular双向绑定的实现嗯…面试三次,每个面试官都会问我这个问题,这里还是贴一下参考的文章吧:Angular沉思录(一) 数据的双向绑定AngularJS 数据双向绑定揭秘简易实现版本:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263var Scope = function () { this.$$watchers = [];}Scope.prototype.$watch = function( watchExp, listener ) { this.$$watchers.push( { watchExp: watchExp, listener: listener || function () {} });};Scope.prototype.$digest = function() { var dirty; do { dirty = false; for (var i = this.$$watchers.length - 1; i >= 0; i--) { var newValue = this.$$watchers[i].watchExp(), oldValue = this.$$watchers[i].last; if( oldValue !== newValue) { this.$$watchers[i].listener(newValue, oldValue); dirty = true; this.$$watchers[i].last = newValue; } }; } while(dirty);};var $scope = new Scope();$scope.name = 'Ryan';$scope.$watch(function () { return $scope.name;}, function ( newValue, oldValue ) { console.log('Input Value has update:' + newValue + ' and Old Value is: ' + oldValue); element[0].value = newValue; tips.innerHTML = newValue});/** 视图到模型 **/var element = document.querySelectorAll('input'), tips = document.querySelectorAll('#tips')[0];element[0].addEventListener('keyup', function () { $scope.name = element[0].value; $scope.$digest();})/** 模型到视图 **/var updateScopeValue = function () { $scope.name = 'Bob'; $scope.$digest();}var btn = document.getElementsByTagName('button')[0];btn.addEventListener('click', function () { updateScopeValue();})

0

实习招聘面试经历-1

1. 无线端开发和PC端开发有什么不同?从三个方面讲:HTML:使用很多新的标签:12<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"><meta name="apple-mobile-web-app-capable" content="yes"> 在body里面可以使用<header><section>等H5新标签CSS:使用rem单位;rem单位的计算方法:40 * (设备宽度 / 设计图宽度);使用的时候实际设计图大小/40面试的时候说错了=。= 但是他没告诉我(把设计图宽度和设备宽度说反了)设置在document.documentElement.style.fontSize;设备宽度为document.documentElement.clientWidth使用更多的CSS3动画;flex布局,但是要考虑兼容性问题针对特定大小的设备进行媒体查询JavaScript:使用一些轻量级的第三方库,如用zepto代替jquery,vue代替angular;流量很重要,更要注重js文件的压缩合并混淆;其他的当时没想到

0

移动端SeeApp开发总结-5

这次总结一下用Angular的一些小技巧~ 好的实践 自动启动:ng-app,自动引导启动第一个ng-app;手工启动:angular.bootstrap() 使用ng-bind代替双括号语法。避免Angular用数据替换时出现双括号;实在要用时,使用ng-cloak,并且能避免内容闪烁 需要使用background-image时,可以自己定义指令: 123456789app.directive('backImg', function(){ return function(scope, element, attrs){ attrs.$observe('backImg', function(value) { element.css({ 'background-image': 'url(' + value +')' }); }); };}); 也可以使用ng-style来实现。