随笔 - 381
文章 - 0
评论 - 11
阅读 -
57万
12 2015 档案
Angular - - form.FormController、ngModel.NgModelController
摘要:form.FormControllerFormController跟踪所有他所控制的和嵌套表单以及他们的状态,就像有效/无效或者脏值/原始。每个表单指令创建一个FormController实例。方法:$addControl();给表单注册一个控制器。使用了ngModelController的输入元素...
阅读全文
Angular - - angular.Module
摘要:angular.ModuleAngular模块配置接口。方法:provider(name,providerType);name:服务名称。providerType:创建一个服务的实例的构造函数。factory(name,providerFunction);name:服务名称。providerFunc...
阅读全文
Angular - - $rootScope.Scope
摘要:这里讲的是一些scope的操作,如创建/注销/各种监听及scope间的通信等等。$rootScope.Scope可以使用$injector通过$rootScope关键字检索的一个根作用域。可以通过$new()方法创建子作用域。(大多子作用域是在HTML模板被执行编译时自动生成)格式:$rootSco...
阅读全文
Angular - - $compile编译服务与指令
摘要:$compile这是个编译服务。编译一段HTML字符串或者DOM的模板, 产生一个将scope和模板连接到一起的函数。编译服务主要是为指令编译DOM元素,下面的一大段也是主要介绍指令的。下面是一个被声明的带指令定义对象的指令的示例: var myModule = angular.module(.....
阅读全文
Angular - - $cacheFactory
摘要:可能之前的api写的有些枯燥吧,因为不烧脑,不需要很多逻辑思维来做处理,那么之后的文章会有趣很多,慢慢的开始烧脑了,准备好大量脑细胞的死亡吧~ 先来篇简单的缓存服务。这里野兽把api文档里的$cacheFactory和$cacheFactory.Cache 放到一起学习。$cacheFoctory...
阅读全文
Angular - - ngIf、ngSwitch、ngHide/ngShow
摘要:在组合这些ng指令写到一篇文章里的时候,基本是有规则的,野兽把功能相似相近的一类大多会组合到一起,方便理解和记忆。这篇的三个指令也都是对DOM元素的操作,页面上显示/隐藏的判断,添加/移除的判断。ngIfngIf指令会根据指定的表达式返回的boolean类型值对该元素做添加到/移除出Dom树的操作。...
阅读全文
Angular - - ngInclude、ngTransclude
摘要:这两个都是HTML DOM嵌入指令ngInclude读取,编译和插入外部的HTML片段。格式:ng-include=“value” class=”ng-include:value”value:string类型 模板id或者模板urlex:表达式,载入的时候执行。autoscroll:页面载入后,当n...
阅读全文
Angular - - ngReadonly、ngSelected、ngDisabled
摘要:ngReadonly该指令将input,textarea等文本输入设置为只读。HTML规范不允许浏览器保存类似readonly的布尔值属性。如果我们将一个Angular的插入值表达式转换为这样的属性,那么当浏览器删除该属性时,绑定信息就会丢失。这个指令不被浏览器删除,并且提供了一个永久性的可靠的地方...
阅读全文
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
摘要:ngKeydown/ngKeypress/ngKeyup该指令在按键按下/按键按下/按键松开时执行指定表达式。ngKeydown和ngKeypress略有不同,目前的测试是ngKeypress针对系统按键是无效的,而ngKeydown可以。ngKeyup指令在按键松开的时候执行。使用代码: {{c...
阅读全文
Angular - - ngList、ngRepeat、ngModelOptions
摘要:ngList在文本输入的分隔的字符串和字符串数组间做转换,可以是一个固定的字符串分隔符(默认逗号)或正则表达式。格式:ng-list=”value”value:表达式 通过这个值分隔字符串。使用代码: {{ctrl.list}} (functio...
阅读全文
Angular - - ngHref、ngSrc、ngCopy/ngCut/ngPaste
摘要:ngHref在Angular程序没完成改变链接上用{{hash}}方式绑定的href值的时候,当用户点击该链接会跳到一个错误的页面。格式:ng-href=”value”value:表达式。使用代码: 点击进入xxxxx网站如果href绑定的url是动态绑定(从就是代码中绑定到view),使用的是h...
阅读全文
Angular - - ngCsp、ngFocus、ngBlur、ngForm
摘要:ngCsp处理CSP(上下文安全策略)的支持。当开发如google浏览器的扩展时候这个就必须使用。CSP禁止应用程序使用eval和Function(string)生成的函数。如果我们需要兼容,我们只需要使用$parse执行getterfn而不违反这些限制。AngularJs使用Function(st...
阅读全文
Angular - - ngCloak、ngController、ngInit、ngModel
摘要:ngCloakngCloak指令是为了防止Angular应用在启动加载的时候html模板将会被短暂性的展示。这个指令可以用来避免由HTML模板显示造成不良的闪烁效果。格式: ng-cloak class=“ng-cloak“使用代码: {{'Hello World'}} {{'Hello Wor...
阅读全文
Angular - - ngClass、ngClassEven、ngClassOdd、ngStyle
摘要:这几个都关于样式及类名修改的,所以先把样式代码贴上吧。 .red{color:red} .blue{color:blue}写案例用到的样式就这么简单的两个,下面进入正题。ngClassngClass指令允许在HTML标签上通过绑定一个代表所有将被添加的类的表达式去动态的设定CSS类名。该指令操作...
阅读全文
Angular - - ngApp、ngBind、ngBindHtml、ngNonBindable
摘要:对于ng-系列的指令,每篇文章写2-5个吧,不然显得文章好短....ngApp使用这个指令自动启动一个AngularJS应用。ngApp指令指定了应用程序的根节点,通常会将ngApp放置在网页的根节点如或标签的。格式:ng-app=”value”value:当前应用程序模块的名称。使用代码: 需要...
阅读全文
Angular - - ngChange、ngChecked、ngClick、ngDblclick
摘要:ngChange当用户更改输入时,执行给定的表达式。表达式是立即进行执行的,这个和javascript的onChange事件的只有在触发事件的变化结束的时候执行不同。格式:ng-change=”value”value: 表达式。使用代码: (function...
阅读全文
Angular - - angular.injector、angular.module
摘要:angular.injector创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入。格式:angular.injector(modules);modules: Array 注入的模块(一个或多个)。使用代码: (function () { angular...
阅读全文
Angular - - Angular数据类型判断
摘要:angular.isArray判断括号内的值是否为数组。格式:angular.isArray(value);value: 被判断是否为数组的值。---------------------------------------------------------------angular.isDate判...
阅读全文
Angular - - angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson
摘要:angular.uppercase将指定的字符串转换成大写格式:angular.uppercase(string);string:被转换成大写的字符串。使用代码: var str = "ABCabc"; var upperCase = angular.uppercase(str);//ABCAB...
阅读全文
Angular - - angular.bind、angular.bootstrap、angular.copy
摘要:angular.bind返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能。格式:angular.bind(self,fn,args);self:object 对象; fn的上下文对象,在fn中可以用this调用fn...
阅读全文
Angular - - angular.element
摘要:angular.element将DOM元素或者HTML字符串一包装成一个jQuery元素。格式:angular.element(element);element:包装成jquery对象的html字符串或者dom元素jqLite提供的方法:addClass()after()append()attr()...
阅读全文
Angular - - angular.equals
摘要:angular.equals对比两个对象/值是否相等。支持值类型、正则表达式、数组和对象。如果下列至少有一个是正确的,则将两个对象/值视为相等。两个对象/值能通过===比较。两个对象/值是同一类型/他们的属性一致并且通过angular.equals详细比较。两者都是NaN. (在javascript...
阅读全文
Angular - - angular.identity和angular.noop
摘要:angular.identity函数返回本身的第一个参数。这个函数一般用于函数风格。格式:angular.identity() 使用代码: (function () { angular.module("Demo", []) .controller("testCtrl", testCtr...
阅读全文
Angular - - angular.forEach、angular.extend
摘要:angular.forEach调用迭代器函数取每一项目标的集合,它可以是一个对象或数组。迭代器函数与迭代器(value、key)一起调用,其中值是一个对象属性或数组元素的值,而数组元素是对象属性的关键或数组元素索引。为函数指定一个可选的上下文。格式:angular.forEach(obj,itera...
阅读全文
Angular - - $anchorScroll、$controller、$document
摘要:$anchorScroll根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素。监听$location.hash()并且滚动到url指定的锚点的地方。可以通过$anchorScrollProvider.disableAutoScrolling()禁用。依赖:$w...
阅读全文
Angular - - $http请求服务
摘要:$http$http是Angular的一个核心服务,它有利于浏览器通过XMLHttpRequest 对象或者 JSONP和远程HTTP服务器交互。$HTTP API 是基于 $q服务暴露的deferred/promise APIs。快捷使用方式:$http.get$http.head$http.po...
阅读全文
Angular - - $interval 和 $timeout
摘要:$intervalwindow.setInterval的Angular包装形式。Fn是每次延迟时间后被执行的函数。间隔函数的返回值是一个承诺。这个承诺将在每个间隔刻度被通知,并且到达规定迭代次数后被取消,如果迭代次数未定义,则无限制的执行。通知的值将是运行的迭代次数。取消一个间隔,调用$intrev...
阅读全文
Angular - - $animate
摘要:$animate$animate服务提供了基本的DOM操作功能如在DOM里插入、移除和移动元素,以及添加和删除类。这个服务是ngAnimate的核心服务,为CSS和Javascript提供了高档次的动画。$animate在Angular核心都是有效的,无论如何,这个服务为了支持所有动画须包含ngAn...
阅读全文
Angular - - $interpolate 和 $parse
摘要:$interpolate将一个字符串编译成一个插值函数。HTML编译服务使用这个服务完成数据绑定。使用:$interpolate(text,[mustHaveExpression],[trustedContext],[allOrNothing]);text:需要被编译的字符串。mustHaveExp...
阅读全文
Angular - - $q 承诺与延迟
摘要:$q一个帮助处理异步执行函数的服务。当他们做完处理时,使用它们的返回值(或异常)。受 Kris Kowa’s Q 的启发,这是一个实现promise/deferred对象的启用。$q的两种方式---这是一个更类似于Kris Kowal Q或jQuery的递延实现,另一种在一定程度上类似的ES6承诺。...
阅读全文
Angular - - $location 和 $window
摘要:$location$location服务解析浏览器地址中的url(基于window.location)并且使url在应用程序中可用。将地址栏中的网址的变化反映到$location服务和$location的变化反映到浏览器地址栏。公开浏览器地址栏中的当前网址,这样就可以:1.观察和监听网址。2.改变网...
阅读全文
Angular - - $sce 和 $sceDelegate
摘要:$sce$sce 服务是AngularJs提供的一种严格上下文转义服务。严格的上下文转义服务严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模式。由用户通过ng-bind-html绑定任意HTML语句就是这方面的一个例子。我们称这些上下文转义为特权...
阅读全文
Angular - - $templateCache 和 $templateRequest
摘要:$templateCache第一次使用模板,它被加载到模板缓存中,以便快速检索。你可以直接将模板标签加载到缓存中,或者通过$templateCache服务。通过script标签:备注:script标签模板不需要包含在文档头部。但他必须在$rootElement下,不然模板将会被忽略。通过$templ...
阅读全文
Angular - - $resource 更高端的数据交互
摘要:$resource创建一个resource对象的工厂函数,可以让你安全的和RESFUL服务端进行数据交互。需要注入 ngResource 模块。angular-resource[.min].js默认情况下,末尾斜杠(可以引起后端服务器不期望出现的行为)将从计算后的URL中剥离。这个可以通过$reso...
阅读全文
Angular - - filter 过滤器
摘要:FilterNg里的过滤器。currency:把一个数字格式化成货币模式(如$1,234.56)。当没有提供任何货币符号时,默认使用当前区域的符号。使用:HTML:{{ currency_expression | currency:symbol:fractionSize}}JS:$filter(“c...
阅读全文
Angular - - ngRoute Angular自带的路由
摘要:ngRoute$routeProvider配置路由的时候使用。方法:when(path,route);在$route服务里添加一个新的路由。path:该路由的路径。route:路由映射信息。controller:字符串或函数,指定控制器。controllerAs:一个用于控制器的标识符名称。。tem...
阅读全文
Angular Cookies 操作
摘要:$cookiesProvider使用$cookiesProvider改变$cookies服务的默认行为。默认属性path:字符串,cookies只在这个路径及其子路径可用。默认情况下,这个将会是出现在你基础标签上的网址路径。domain:字符串,cookies只在这个域及其子域可用。为了安全问题,如...
阅读全文
Angular - - 脏值检查及其相关
摘要:今天突然就想写写$digest和$apply,这些都是脏值检查的主体内容。先以普通js来做一个简单的监控例子吧: var div = ducoment.getElementById("myDiv"); div.addEventListener("click",function(e){ ...
阅读全文
JavaScript 扯几句单线程相关
摘要:JavaScript 扯几句单线程相关众所周知,Javascript是单线程执行的,这也就是说:JavaScript在同一个时间上只能处理一件事。他不像C,Java等这些多线程的,可以开不同的线程去同时处理多件事情。那么为什么别的语言都可以这么方便的去开多个线程去同时执行多个任务,JavaScrip...
阅读全文
AngularJs ui-router 路由的介绍
摘要:AngularJs ui-router 路由介绍野兽之前有写过一篇关于Angular自带的路由:ngRoute。今天来说说Angular的第三方路由:ui-router。那么有人就会问:为什么Angular有了自带的路由,我们还需要用ui-router呢?这里简单明了的说明下ngRoute和ui-r...
阅读全文
js模块化开发——require.js学习总结
摘要:1、为什么使用require.js作为命名空间; 作为命名空间使用;异步加载js,避免阻塞,提高性能;js通过require加载,不必写很多script2、require.js的加载require.js下载下载后,放在指定目录就可以加载了?1有人可能会想到,加载这个文件,也可能造成网页失去响应。解决...
阅读全文
jQuery原型技术分解
摘要:jQuery原型技术分解起源----原型继承 用户过javascript的都会明白,在javascript脚本中到处都是 函数,函数可以归置代码段,把相对独立的功能封闭在一个函数包中。函数也可以实现类,这个类是面向对象编程中最基本的概念,也是最高抽象,定义一个灰就相 当于制作一个模型,然后借助这个模...
阅读全文
js模块化开发——require.js的用法详细介绍(含jsonp)
摘要:RequireJS的目标是鼓励代码的模块化,它使用了不同于传统baseUrl也可以通过RequrieJS config拖动设置。如果没有显示指定config及data-main,则默认的baseUrl为包含RequireJS的html页面所在目录。requireJS默认假定所有的依赖资源都是js脚本...
阅读全文
js模块化开发——require.js的实战写法1
摘要:关于在Require.js使用一个JS插件的问题我需要在项目中引用一个js控件,这个控件依赖于a.js,b.js,c.js,.....n.js N多个js以及jquery及jquery-ui,各js之间相互还有依赖关系,也就是说必须先加载某一部分才能加载另一部分,最终才能加载整个控件。我 想使用re...
阅读全文
js原生设计模式——13桥接模式(相同业务逻辑抽象化处理的职责链模式)
摘要:桥接模式之多元化类之间的实例化调用实例 桥接模式之多元化类之间的实例化调用
阅读全文
js原生设计模式——12装饰者模式
摘要:1、面向对象模式装饰者 函数式编程实现装饰者效果——其实是职责链模式
阅读全文
firefox-Developer开发者站点——关于Object.create()新方法的介绍
摘要:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/createObject.create() 方法创建一个拥有指定原型和若干个指定属性的对象。语法Object.create(...
阅读全文
jQuery 的 ready 函数是如何工作的?(源码分析)
摘要:如果你使用过 jQuery , 就必然使用过 ready 函数,它用来注册当页面准备好之后可以执行的函数。问题来啦,我们的页面什么时候准备好了呢?1. onload 事件最基本的处理方式就是页面的 onload 事件,我们在处理这个事件的时候,可以有多种方式,即可以通过 HTML 方式,直接写在 b...
阅读全文
js原生设计模式——10适配器模式之参数适配器
摘要:原理:参数适配器说白了就是给出要带入数据字段的对应字段的默认值,一旦数据字段值不足,就取默认值补足。[写法一]:直接返回 参数适配器1 [写法一]:闭包返回 参数适配器1 [写法三]:匿名对象返回 参数适配器1
阅读全文
js原生设计模式——9外观模式封装
摘要:1、事件处理程序兼容性封装 外观模式之事件处理程序浏览器兼容性封装 事件监听测试按钮2、获取事件对象、获取事件触发对象以及阻止默认行为的多对象封装 获取事件对象、获取事件触发对象以及阻止默认行为的多对象封装
阅读全文
如何选择面向移动设备的html5开发框架
摘要:很久以前整理了篇将手机网站做成手机应用的JS框架。时隔一年多,很多新的技术已经出现,下面再来总结下还有哪些框架是适合面向手机设备的开发的。 1、jQuery Mobile jQuery Mobile 是 jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带...
阅读全文
选择移动web开发框架研究——有mui、frozenui以及Sencha Touch等
摘要:纯粹的总结一下移动web开发框架,移动 web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch...
阅读全文
Javascript操作DOM常用API总结
摘要:阅读目录基本概念节点创建型api页面修改型API节点查询型API节点关系型api元素属性型api元素样式型api总结文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识。回到顶部基本概念在讲解操作...
阅读全文
js架构设计模式——从angularJS看MVVM
摘要:javascript厚积薄发走势异常迅猛,导致现在各种MV*框架百家争雄,MVVM从MVC演变而来,为javascript注入了全新的活力。我工作的业务不会涉及到 angularJS[ng] 这么重量级的东西,只有自己闲暇之余做的项目才能一尝angularJS。我才疏学浅,而这个话题又很大,所以见到...
阅读全文
前端MVVM框架:Knockout.JS(一)
摘要:前言 在我们平时开发 Web 应用程序的时候,如果项目不算特别大的话,一般都是拿 jQuery 再配合一些前端 UI 框架就在项目上面应用了。如果页面逻辑稍微复杂的话,那个在写前端 JavaScript 代码时,势必会充斥前大量 jQuery 的选择器的应用。我并不想说它好或不好。只想问一下,有没...
阅读全文
js架构设计模式——理解javascript中的MVVM开发模式
摘要:理解javascript中的MVVM开发模式 http://blog.csdn.net/slalx/article/details/7856769MVVM的全称是Model View ViewModel,这种架构模式最初是由微软的MartinFowler作为微软软件的展现层设计模式的规范提出,它是M...
阅读全文
js架构设计模式——由项目浅谈JS中MVVM模式
摘要:1. 背景最近项目原因使用了durandal.js和knockout.js,颇有受益。决定写一个比较浅显的总结。之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很传统的MVC开发模式了。后来,前端用Flex还有微软的WPF做过开发,到这次,前端使用纯JS+HTML,利用k...
阅读全文
JavaScript使用正则表达
摘要:JavaScript使用正则表达正则表达式概述 在前面已经涉及了一些正则表达式的用法,现在将系统地学习正则表达式的语法和用途。正则表达式主要用于进行字符串的模式匹配,例如判断一个字符串是否符合指定格式等。例如在windows下搜索文件,可以用“*”或者“?”这样的通配符。在正则表达式的语法中,有更多...
阅读全文
Javascript算法系列之快速排序(Quicksort)
摘要:Javascript算法系列之快速排序(Quicksort)原文出自:http://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/https://gist.github.com/paullewis...
阅读全文
数据结构与算法JavaScript (五) 串(经典KMP算法)
摘要:数据结构与算法JavaScript (五) 串(经典KMP算法)KMP算法和BM算法KMP是前缀匹配和BM后缀匹配的经典算法,看得出来前缀匹配和后缀匹配的区别就仅仅在于比较的顺序不同前缀匹配是指:模式串和母串的比较从左到右,模式串的移动也是从 左到右后缀匹配是指:模式串和母串的的比较从右到左,模式串...
阅读全文
js架构设计模式——MVVM模式下,ViewModel和View,Model有什么区别
摘要:MVVM模式下,ViewModel和View,Model有什么区别Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。View:也很简单,就是展现出来的用户界面。基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后...
阅读全文
数据结构与算法JavaScript (四) 串(BF)
摘要:数据结构与算法JavaScript (四) 串(BF)串是由零个或多个字符组成的有限序列,又叫做字符串串的逻辑结构和线性表很相似的,不同的是串针对是是字符集,所以在操作上与线性表还是有很大区别的。线性表更关注的是单个元素的操作CURD,串则是关注查找子串的位置,替换等操作。当然不同的高级语言对串的基...
阅读全文
数据结构与算法JavaScript (二) 队列
摘要:数据结构与算法JavaScript (二) 队列队列是只允许在一端进行插入操作,另一个进行删除操作的线性表,队列是一种先进先出(First-In-First-Out,FIFO)的数据结构队列在程序程序设计中用的非常的频繁,因为javascript单线程,所以导致了任何一个时间段只能执行一个任务,而且...
阅读全文
数据结构与算法JavaScript (三) 链表
摘要:数据结构与算法JavaScript (三) 链表我们可以看到在javascript概念中的队列与栈都是一种特殊的线性表的结构,也是一种比较简单的基于数组的顺序存储结构。由于 javascript的解释器针对数组都做了直接的优化,不会存在在很多编程语言中数组固定长度的问题(当数组填满后再添加就比较困难...
阅读全文
数据结构与算法JavaScript (一) 栈
摘要:数据结构与算法JavaScript (一) 栈序数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录下来吧git代码下载:https://github.co...
阅读全文
js架构设计模式——前端MVVM框架设计及实现(二)
摘要:前端MVVM框架设计及实现(二)在前端MVVM框架设计及实现(一)中有一个博友提出一个看法:“html中使用mvvm徒增开发成本”我想这位朋友要表达的意思应该是HTML定义了大量的语法标记,HTML中放入了太多的逻辑,从而增加了复杂度将逻辑放入HTML是一个不好的做法,也不建议这么做,即便从复用的角...
阅读全文
js架构设计模式——前端MVVM框架设计及实现(一)
摘要:前端MVVM框架设计及实现(一)最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了借鉴的自然还是从正美的avalon开始了,我记得还是去年6月写过一个系列的avalon源码分析的,不过那时候0.7版本,不够健全,现在已经好太多了框...
阅读全文
js架构设计模式——MVC,MVP 和 MVVM 的图示及简单明了的区别说明
摘要:MVC,MVP 和 MVVM 的图示复杂的软件必须有清晰合理的架构,否则无法开发和维护。MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用。它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了。一、MVCMVC模式的意思是,...
阅读全文
js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
摘要:你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-ViewModel)请大家谈一谈各自的理解吧,对比之下更能明确特征和适用的范围,菜鸟们畅所欲言,老鸟大牛...
阅读全文