FreeOZ论坛

标题: AngularJs 关于不使用ng-controller='HelloController' [打印本页]

作者: DDD888    时间: 10-3-2014 19:14
标题: AngularJs 关于不使用ng-controller='HelloController'
例子

<html ng-app>
<head>
<script src="angular.js"></script>
<script src="controllers.js"></script>
</head>
<body>
<div ng-controller='HelloController'>
<p>{{greeting.text}}, World</p>
</div>
</body>
</html>

controllers.js:
function HelloController($scope) {
$scope.greeting = { text: 'Hello' };
}

有没有办法不在div里写ng-controller='HelloController',因为这样,如果想混淆javascript代码的话,仍旧必须给出HelloController,很容易给人提供阅读javascript的思路,导致obfuscate javascript失效
作者: cais    时间: 10-3-2014 22:30
这个东西混淆起来可能要自己改一下混淆器才行。因为你要对html也混淆。
作者: simpledream    时间: 11-3-2014 13:06
本帖最后由 simpledream 于 11-3-2014 14:09 编辑

一个想法,仅供参考,就是把controller写在router里面

比如:

  1. .config([
  2.     '$routeProvider'
  3.     ($routeProvider) ->
  4.         $routeProvider
  5.             .when(
  6.                 '/'                              
  7.                 templateUrl: 'views/main.html'
  8.                 controller: 'HelloController'
  9.             )
复制代码
为了简洁一点,我用了CoffeeScript,别介意
作者: DDD888    时间: 11-3-2014 13:16
simpledream 发表于 11-3-2014 14:06
一个想法,仅供参考,就是把controller写在router里面

比如:为了简洁一点,我用了CoffeeScript,别介意


看不懂

routeProvider是啥代码? php运行在服务器上的吗?
作者: simpledream    时间: 11-3-2014 15:23
本帖最后由 simpledream 于 11-3-2014 16:29 编辑
DDD888 发表于 11-3-2014 14:16
看不懂

routeProvider是啥代码? php运行在服务器上的吗?


看这个 http://docs.angularjs.org/api/ngRoute/provider/$routeProvider

可以用这里边的controller或者controllerAs来定义特定页面的controller,比如我刚才的代码就是定义主页面(router是 ‘/')的controller是‘HelloController'

简单说routerProvider 就是用来配置router的,没有server代码,全部是client代码

是不是我哪边写的不够清楚?
作者: ypwu1    时间: 11-3-2014 15:29
DDD888 发表于 11-3-2014 14:16
看不懂

routeProvider是啥代码? php运行在服务器上的吗?

routeProvider 是js 层面上的routing,和任何后台语言无关。 你可以完全只写一个html页面来实现。通过ajax加载你需要的template,如 'views/main.html'
作者: cais    时间: 11-3-2014 20:49
simpledream 发表于 11-3-2014 14:06
一个想法,仅供参考,就是把controller写在router里面

比如:为了简洁一点,我用了CoffeeScript,别介意

同一个$routeProvider怎么要重复三次啊?
作者: Jay@Au    时间: 11-3-2014 21:19
Angular Doc 里面就有manual initialization哦, 把initialization放到单独js,然后混淆下。

<!doctype html>
<html xmlns:ng="http://angularjs.org">
  <body>
    Hello {{'World'}}!
    <script src="http://code.angularjs.org/angular.js"></script>
    <script>
       angular.element(document).ready(function() {
         angular.module('myApp', []);
         angular.bootstrap(document, ['myApp']);
       });
    </script>
  </body>
</html>
作者: black_zerg    时间: 11-3-2014 21:25
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 11-3-2014 22:27 编辑

说真的我看不出来Angular 有什么好,反生产力。 属于简单问题更简单,一般事情搞复杂,复杂问题变惨剧的节奏
作者: in10ts    时间: 11-3-2014 21:55
black_zerg 发表于 11-3-2014 22:25
说真的我看不出来Angular 有什么好,反生产力。 属于简单问题更简单,一般事情搞复杂,复杂问题变惨剧的节奏 ...

我以前也和你这样想,用了半年,现在彻底爱上它了,真心好
作者: simpledream    时间: 11-3-2014 21:59
cais 发表于 11-3-2014 21:49
同一个$routeProvider怎么要重复三次啊?

因为用了Dependency Injection

具体可以看这个 http://docs.angularjs.org/guide/di

这样代码压缩的时候可以彻底压缩成a,b,c 什么的,不然用uglify压缩的时候client端的app就会出错了
作者: black_zerg    时间: 11-3-2014 22:10
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 11-3-2014 23:40 编辑
in10ts 发表于 11-3-2014 22:55
我以前也和你这样想,用了半年,现在彻底爱上它了,真心好


把个HTML弄跟xaml似的。还有那个双双括号,太难看了,不符合我的审美观。我从java出身,无数框架一路学过来,到python到GWT到JQuery到WPF到silverlight,  充分体会了框架都是吃饱了撑的道理。 当年的struts还不是全世界都觉得真心好,那其实就是撑的,要我说JSP和servlet才是真心好。
技术都是浮云,我现在比较看重的是美观。angular把HTML整的太难看了,不伦不类的. 框架越多魔术越多,学起来累改起来烦,一出问题就得google,看代码都看不明白。前端有个 JQuery就行了,说实话现在浏览器也牛了,IE也前进了,手写JS也没什么不好。

要不你们谁举个例子,证明一下angular 能做的事情 ,我用手写js没法实现或者非常吃力,那我就服了。
作者: simpledream    时间: 12-3-2014 10:49
本帖最后由 simpledream 于 12-3-2014 11:50 编辑
black_zerg 发表于 11-3-2014 23:10
把个HTML弄跟xaml似的。还有那个双双括号,太难看了,不符合我的审美观。我从java出身,无数框架一路学 ...


确实是这样,一般普通的展示型网页jQuery就可以了,我看法和你一样。

但就像为什么BackboneJS会出现一样,现在客户端可以非常复杂了,要做以前桌面应用做的事情了,比如Gmail,Google Map,各种在线的GTD时间管理工具,这时候jQuery就不够了,因为Interaction太多了

这个时候Two way binding,几乎是必须的,而Angular之于BackboneJS, KnockoutJS, EmberJS来说是最简单的,后几个好用get和set来实现

举几个例子:Evernote在线版(能现实应用版几乎所有功能),Gmail,Google Map, 在线音乐(太多了,我喜欢的百度音乐,和本地应用没什么区别),在线试衣间

总的来说和user的Interaction非常多非常复杂的,和本地应用可以媲美的就需要angular之类的框架,但因为日常中大多数网站都是浏览型,用户点点看看,jQuery足够,我和你观点一致。
作者: DDD888    时间: 12-3-2014 12:29
我因为我写的javascript太长啦,所以想用angularJs来写很少的代码来做同样的事
作者: black_zerg    时间: 12-3-2014 17:34
提示: 作者被禁止或删除, 无法发言 这些例子那个用了angular. 要是Google map 能用angular我就真服了,这玩意就只能做简单东西
作者: woodheadz    时间: 12-3-2014 19:02
我打算搞得一个开源框架knot.js,定位和knockoutjs差不多,但因为绑定逻辑和html分离,混淆化会比较容易。修改混淆器让它把cbs定义当成css混淆即可。
这个帖子是关于这个框架一个讨论帖。后来因为太忙就没继续维护网站和github了。现在还在我们内部使用用,经过一个项目的检验之后打算继续包装开源。
http://www.freeoz.org/ibbs/thread-1089308-4-1.html

作者: simpledream    时间: 12-3-2014 19:23
black_zerg 发表于 12-3-2014 18:34
这些例子那个用了angular. 要是Google map 能用angular我就真服了,这玩意就只能做简单东西

哥们儿,我也不想说服你什么的,就我自己的经历来说,我是喜欢AngularJS的,我推荐你试一下,就这样

如果你现在的Projects没有AngularJS也很好,那确实没必要

而我的话,AngularJS帮了我大忙,就是这样

就事论事,没有冒犯的意思。



作者: simpledream    时间: 12-3-2014 19:27
DDD888 发表于 12-3-2014 13:29
我因为我写的javascript太长啦,所以想用angularJs来写很少的代码来做同样的事


是啊,有人说可以减少80%的代码,有点吹了,但是就我个人来说,30%有的

而且AngularJS和jQuery兼容很好,这样在AngularJS的Directive里面,我还是可以写jQuery代码,开心
作者: cais    时间: 12-3-2014 19:29
新的东西不停的出现。jquery刚刚用上手,backbone还没学好,又出来不少新的。
作者: mason00    时间: 12-3-2014 20:14
以AngularJS为代表的front end框架是web开发的新发展。以前数据绑定html都是在服务器端搞的。从最早的Loop循环输出table,到Asp.Net的服务器端控件。现在异步加载正在趋向只获取Json数据,而在前段实现数据与Html的绑定。Http协议不再是html传输协议,而更像数据服务协议了。

大多数程序员我想都是偏后端的多,前端搞UI的一度不被认为是开发人员。只是现在市场需求变了,新市场针对的都是普通用户,这些普通用户需要的是简单好用的UI,也就是好的用户体验。满屏幕数据,表格,按钮的“专业”界面,已经没有多少市场可以挖掘了。苹果的成功,正是以用户体验为入口,开发了一片新的技术受众。相同的,web的开发,在移动设备进入后,也开始注重前端的表现了。

说白了,普通用户能有多大复杂的业务逻辑。还不就是几个功能,换不同的界面,不同的用法吗。后台逻辑,早就开发的差不多了,你后端做得再好,没有大量数据,普通应用,谁看得出好坏?只有前端的第一感觉最直观。页面老是刷新,老是跳,就是给人慢,还要看网络状况。页面设计不好,也给人垃圾的感觉。相反,优雅的布局,responsive的UI,后端就算慢,就算垃圾,前端只要有个gif表示loading,客户多少还是OK的。

javascript已经越来越像web的前端引擎了,那些复杂的框架,minify,obfuscate之后几乎就和binary dll一样,很难调试。这也说明前端现在是一片新天地,没有那个公司能完全控制住web前端开发的模式。浏览器,html5支持,到现在各自不同javascript框架。真实一片丛林。

个人感觉AngularJS太大而全了,Knockout的规模比较容易入门。Knockout可以看作前台的数据绑定控件。html代码也会少一些。像其他bootstrap什么的UI框架,最是麻烦,一个简单的html tag,套上bootstrap,到了客户端,就一大堆属性,css,乱七八糟的。感觉就像请一个魔术师变魔法一样。观众看得很开心,不过要是他搞砸了,你想补救基本不可能。
作者: black_zerg    时间: 12-3-2014 21:22
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 12-3-2014 22:54 编辑

基本上就是楼上这个意思。用一个框架,基本上就是看两个 一个是功能明确,一个就是必须灵活不能太侵略性。 在我看来比较好的框架有 Hibernate,d3, jQuery 之类,其实都是库而非框架。就angular来说,连带学习成本,我非常不相信这东西能提高我的开发效率。近期类似的框架都是针对CRUD来的,所以对我来说完全没用,我很多年都没写增删改了。

个人觉得使用这种重型框架都是自虐。工作量不是光看代码量的,这种魔法框架一旦砸了就整个悲剧。

忍不住又拿出我这个例子 http://shenshowcase.appspot.com/static/map/demo/basic.html ,这个整个地图控件就是我手写的,没用任何框架。 你倒用个angular写写看。angular说来说去就是大而不专。jQuery基本没有学习坡度,原生javascript + html + css 是行业规范。angular则看似简单实则笨重,不好学。上面有人说省了 30%的代码,那还算个事么? 代码不等于工作量。

说来说去就是图快就暴力jQuery,长期产品就原生javascript,适用任何场合。你一样可以实现所有的router,binding 这些概念,要不了几行代码.  angular属于不伦不类。在这上的脑力投资,换个地方可能完全没用。 当然了,如果工作需要就没什么好说的。

我们都是纯技术流的讨论,也不用着急上火。还是那么说,你们谁用angular写一个例子,我有空就来试试用纯JS实现。javascript其实是很不错的语言,可以用很多技巧把代码写的非常简洁的。 也不是要争个对错,就是检验一下理论。实践出真知,不操代码那都是嘴皮子。你们可以巩固一下自己的angular知识,宣传一下里面的优秀功能.

因为对javascript感兴趣,所以就多说几句。说到底, angular认为目前的 HTML设计的不对,他要自己来一套。这我非常不同意。我觉得 HTML +css + js的三足鼎立真的是非常好的设计。干干净净的HTML那是怎么看怎么顺眼。 javascript 初看起来有点奇怪,但是实际上什么都能做,而且非常简洁。因为‘简陋’,所以给予有创造力的程序员很大的创作空间。写js就可以写出非常有创造性的东西。不像java那么硬邦邦,大家都写一个样。这些框架模式,其实不都是人写的,喜欢就用,不喜欢就自己写一套,又有多难。
作者: mason00    时间: 12-3-2014 22:19
时代在变,特别是在经济不好的大环境下。以前一直都是靠着大公司(.Net/Java)的开发技术,在大公司混饭吃。.Net/Java确实在一定程度上统治了企业级的软件开发。大公司用这些技术,容易找到这方面的人,也有微软,sun,oracle这样的大技术公司做支持。那些开源的(PHP,perl,LAMP什么的),前端html,javascript,css,标准不成熟,也缺乏大公司在企业级别去支持,实现的功能又是商业逻辑中非核心的部分,用这些的大多也就是小公司为了省钱,用不起大公司的东西。

现在经济不好了,企业级开发一方面已经比较成熟了,另一方面开始往印度,中国,东南亚转移,再有就是新开项目由于经济的问题大大减少了,维持一个一定规模的商业逻辑开发团队在高成本地区真的不是大公司现在的策略。界面,用户体验的东西一方面开发成本低,维持的人不需要很多,动一动,改一改,效果还特别好。就好比产品都一进做好了,只是在不景气的环境下需要换个新鲜包装来刺激消费一样。这是花最小成本获得最大的利益。

Java自从被Oracle收购后好像消失了一样,再没听说有什么新发展。.Net倒是版本开得很快,可惜微软的windows平台一直没有突破,倒是在windows 8一个版本,搞得有些不伦不类。特别是对开发人员,传统的开发人员像是被提出desktop,逼到tablet和mobile一样,而微软的标准,显然没有统治这一领域的权威性。这几年,谁敢花时间和精力在微软的最新技术上?WCF,大而全,底层数据又臃肿,配置一大堆,开发没什么。WPF,一开始慢,之后再metro平台上又有些被抛弃,只是保留的界面定义语言。LINQ to sql说是不推荐,方向是EF。EF和MVC,以及现在的很多Asp.Net技术,基本都是源自community的,在被微软扶正。IE浏览器也就那些一定需要IE的activeX,silverlight网站会用一些。说到silverlight,又是一个要被抛弃的东西。谁花时间在这上面,谁心里明白。Windows 8又重新把C++,javascript推上来,估计是C++的team重新掌控了OS开发的方向。.Net整个平台的level都有些昏暗。

哎。。。变化催人前进啊。。。无奈无奈。。。

google的工程师都太猛了,时间太多,钱太多可能。搞出来的框架估计是给一定程度的程序员用的。我是根本没想过前台javascript要搞成今天这样。以前就是做做菜单,搞些特效而已。也有说这就是跟着微软的下场,用微软的都不是真正的程序员。

语言设计上,确实是C#.Net学着舒服,至少是在LINQ之前。同样设计了Delphi的口碑也是不错,比同时代的vb6似乎评价高。可惜没人能改变C++难弄的局面。某种程度,javascript倒开始有些像C++了。实际上的web前台标准,没有哪家公司能垄断,大家都开始磋商标准化的推进和演变。谁要往上面加功能,加自己公司的特色都特难,因为别家的公司,浏览器不一定支持你。不过这个语言的灵活性/操蛋性,倒是可以支持很多天马行空的扩展。JQuery能成功,是因为它处理了不同浏览器的javascript标准化访问,很多时候,我觉得javascript的跨浏览器标准化,是由jQuery实现的。即便如此,JQuery也需要放弃对IE早版本的支持来继续move on。

AngularJS并不是一个标准化程度的东西,倒是更像要改变或者规范程序员在客户端的开发理念。就像当年的Asp.Net server side web form一样,那套东西,现在想想完全是硬搬桌面开发到web开发来。我对Angular其实不熟,就看过几个视频,几个sample,几页文档。这东西真是吓到我了,感觉要把整个后端搬到前台来写一样。还有那个很神奇的Node.js。似乎只是用了javascript的语法,来弄一个web server?Node的走红,好像就是因为现在这种重量级前台应用的需要,自从把http当数据传送协议来用后,一个轻量级的web server就很有必要了,现存的web server,配合上面跑的什么后台服务程序,都太浪费资源了。Asp.Net那个一度耗费我无数精力去理解学习的page life cycle,现在看来完全是阻碍其serve现在这种轻量级JSON数据访问的最大弊病。

我看现在的JSON数据请求,最好是数据库能直接开一个接口在web server上,然后前台的javascript直接写SQL,通过http,url也好,post也罢,直接去数据库引擎。然后数据库就直接返回JSON格式的数据是最理想的解决方案了。都省得数据从raw转换到json了。

什么是老外嘴里的good old time,现在我是体会到了。。。
作者: black_zerg    时间: 12-3-2014 22:23
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 12-3-2014 23:26 编辑

楼上牛! 我还真没想过可以前台写SQL,不过想想其实还真的可行。那帮前端狂人说不定还喜欢得很,搞出个js版本的hibernate. 我最近转到 c#阵营了,要请教各位高手 .net这边有什么关键技术是必学的?
作者: DDD888    时间: 13-3-2014 05:30
black_zerg 发表于 12-3-2014 23:23
楼上牛! 我还真没想过可以前台写SQL,不过想想其实还真的可行。那帮前端狂人说不定还喜欢得很,搞出个js版 ...

unit test for c#
作者: DDD888    时间: 13-3-2014 05:31
mason00 发表于 12-3-2014 23:19
时代在变,特别是在经济不好的大环境下。以前一直都是靠着大公司(.Net/Java)的开发技术,在大公司混饭吃。. ...

前台不应该直接发sql到后台,最明显的就是容易被人黑了网站
作者: DDD888    时间: 13-3-2014 07:13
simpledream 发表于 12-3-2014 20:27
是啊,有人说可以减少80%的代码,有点吹了,但是就我个人来说,30%有的

而且AngularJS和jQuery兼容很 ...

是的,书上说的,现在唯一担心的就是给人读懂我写的网站
作者: simpledream    时间: 13-3-2014 09:14
本帖最后由 simpledream 于 13-3-2014 11:30 编辑
DDD888 发表于 13-3-2014 08:13
是的,书上说的,现在唯一担心的就是给人读懂我写的网站


引用一段话:
AngularJS is not only an innovative framework by today's standards, but it also
influences the web development space of tomorrow. The AngularJS team works
closely with the authors of the mentioned specifications, so there is a chance that
many ideas promoted by AngularJS will make it into the browser's internals
! We can
expect that time spent learning and playing with AngularJS will pay off in the future.


这段话来自AngularJS团队成员,简单说就是AngularJS用的以后很有可能会成为浏览器内置,成为标准,所以学AngularJS是值得的,它是未来的方向。

对于你担心的问题,其实AngularJS写的网站更加语义化,更加好懂,我个人觉得。

比如一个tooltip,angularJS会这样(可以这样,非必须)
  1. <tooltip data-title="This is a tooltip">Hover here<tooltip>
复制代码
对比jQuery版本
  1. <div class="tooltip" data-title="This is a tooltip">Hover here</div>
复制代码
你可以看出AngularJS让你写domain-specific language (DSL) 所以你的HTML可以非常干净,比如下面的一个比较极端的例子
  1. <body>
  2.   <main-content><main-content>
  3.   <sidebar data-title="This is a sidebar"><sidebar>
  4.   <pagination><pagination>
  5. <body>
复制代码
好了,具体内容可以放到模板里,这样你的HTML非常干净,一目了然,别人看到了就知道,这个网页3个部分,主内容(main content),侧边栏(sidebar),最后是分页(pagination)

更重要的是可以复用,比如另外一个页面也需要一个类似的侧边栏(比如只有title不一样),你可以用同样的,只是配置改下,而改配置,你只需要改HTML
  1. <sidebar data-title="This is a sidebar for another page"><sidebar>
复制代码

作者: simpledream    时间: 13-3-2014 09:18
本帖最后由 simpledream 于 13-3-2014 10:38 编辑
DDD888 发表于 13-3-2014 06:31
前台不应该直接发sql到后台,最明显的就是容易被人黑了网站


但是metoerJS,就是这样,貌似很酷,也没说出现过安全问题,而且越来越火了,上次看还只有6000多star,现在有11000多了,厉害啊 https://github.com/meteor/meteor

我还没用过metoerJS,但是很赶兴趣,我觉得很不错,简单看过官方的介绍,这个问题应该不存在
作者: simpledream    时间: 13-3-2014 09:36
mason00 发表于 12-3-2014 23:19
时代在变,特别是在经济不好的大环境下。以前一直都是靠着大公司(.Net/Java)的开发技术,在大公司混饭吃。. ...

写的真好,不能同意更多
作者: mason00    时间: 13-3-2014 09:51
angularjs说一些标准要到浏览器里,这是趋势,问题是到哪个浏览器?ie支持吗?firefox买账吗?FF最近show了一个unreal engine在浏览器里跑游戏,我想浏览器逐渐演化成客户端操作系统也不是不可能,只是如何公布各浏览器都支持的标准是个问题。
作者: woodheadz    时间: 13-3-2014 10:28
mason00 发表于 13-3-2014 10:51
angularjs说一些标准要到浏览器里,这是趋势,问题是到哪个浏览器?ie支持吗?firefox买账吗?FF最近show了 ...

浏览器平台化是不可阻挡的技术趋势。
我们公司下一代的核心产品就是基于浏览器的,优势非常突出。但开发起来也很麻烦,现有的js代码压缩之后接近两m。
我们公司的情况不是个案,现在的web客户端是越来越复杂了。因此一个前端ui框架是非常有存在的价值的。
我们正站在下一个时代的开端,这些新技术虽然有这样那样的弊端,但它们指明的方向没错,只不过还需要时间完善,同时也需要时间让开发人员转变观念罢了。

其实我认为软件业已经从以往那种重型,大框架开发的思维里走出来了。你看现在还有多少人谈论j2ee,webservice?漫天飞的都是rest,动态语言,轻量化框架,敏捷化开发。
矫枉不必过正,没必要否定框架的意义。

至于sql放到客户端,那是不可行的。这年头为了安全大家恨不得把服务器资源的url都全部改写隐藏起来,你还把服务端的逻辑都往客户端放,这样黑客黑起来也太过于轻松了。
作者: mason00    时间: 13-3-2014 13:37
woodheadz 发表于 13-3-2014 10:28
浏览器平台化是不可阻挡的技术趋势。
我们公司下一代的核心产品就是基于浏览器的,优势非常突出。但开发 ...

这个倒是,SQL数据访问什么的,应该还是在服务器端。

我在想前台文件现在开始变大是一个问题。随便放几个javascript框架,就会超过2M,另外每个page请求的时候可能会有缓存,但是总体下载量,会不会还是比以前大很多呢?

由此,我觉得浏览器需要一种新功能,或者http请求需要加入新功能,就是检查服务器端是否有更新。如果没有更新,已经下载的html和javascript(针对这个domian)就不要下载了,甚至浏览器可以将这些文件编译成二进制的来提高速度。这样感觉就像下载源代码,编译运行一样。需要更新的就只有数据了。
作者: woodheadz    时间: 13-3-2014 13:50
mason00 发表于 13-3-2014 14:37
这个倒是,SQL数据访问什么的,应该还是在服务器端。

我在想前台文件现在开始变大是一个问题。随便放几 ...

这个功能已经有了,浏览器都有缓存的,通过配置服务端发送的http 头就可以控制。
比较新的浏览器还直接支持离线api,让web端在离线状态下依旧能够正常工作,待重新连线之后同步数据。

这几年浏览器发展挺快的。我们的产品本来打算做个壳子包装下提供给android平台用户,但后来发现完全没必要。去年底android chrome开始对webapp提供更好的支持,能很简单加点东西就能把网站变成一个独立的android应用,可以指定高分辨率图标,运行于独立进程和全屏模式。
作者: DDD888    时间: 13-3-2014 14:05
woodheadz 发表于 13-3-2014 14:50
这个功能已经有了,浏览器都有缓存的,通过配置服务端发送的http 头就可以控制。
比较新的浏览器还直接支 ...

不准备写个native 的 android应用吗?
作者: woodheadz    时间: 13-3-2014 14:39
DDD888 发表于 13-3-2014 15:05
不准备写个native 的 android应用吗?

不了,没那个精力啊...
现在这个版本在稍微新点的android平板上运行效果还不错。
作者: simpledream    时间: 13-3-2014 14:40
woodheadz 发表于 13-3-2014 14:50
这个功能已经有了,浏览器都有缓存的,通过配置服务端发送的http 头就可以控制。
比较新的浏览器还直接支 ...

和PhoneGap之类比起来怎样呢?
作者: woodheadz    时间: 13-3-2014 15:09
simpledream 发表于 13-3-2014 15:40
和PhoneGap之类比起来怎样呢?

我觉得要是没有什么太特别的本地操作需求,可以不用phonegap
作者: black_zerg    时间: 13-3-2014 18:21
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 13-3-2014 19:47 编辑
simpledream 发表于 13-3-2014 10:14
引用一段话:


你这么一弄就不是HTML了,再说这种替换也容易的很,自己定义一堆tag,然后动态替换不就行了。问题是这么一堆非标准tag把实现隐藏了,作为个人口味没问题,长期来说,除非能成规范,人人都熟悉。不然每人搞一套各种命名有什么意思。不过说良心话我觉得框架技术越多越复杂,对我们越是好事。我最近也是比较悲观,觉得没活干,或者说担心未来没技术活干。估计很长一段时间这些玩意都只能当个人兴趣。

作者: simpledream    时间: 13-3-2014 18:46
black_zerg 发表于 13-3-2014 19:21
你这么一弄就不是HTML了,再说这种替换也容易的很,自己定义一堆tag,然后动态替换不就行了。问题是这么 ...

可以这样做,但非必须

如果你不喜欢AngularJS,你可以用BackboneJS,KnockoutJS, EmberJS..

你可以到这边看看 http://todomvc.com/ 挑一个自己喜欢的就好,我真的没试着说服你什么的,纯个人口味
作者: black_zerg    时间: 13-3-2014 18:50
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 13-3-2014 19:54 编辑

其实我是闲的没事干手痒,就爱手写js. 如果按我兴趣我喜欢天天编码,但真的我是很担心以后没技术市场。结果现在动手机会越来越少
作者: simpledream    时间: 13-3-2014 18:53
black_zerg 发表于 13-3-2014 19:50
其实我是闲的没事干手痒,就爱手写js. 如果按我兴趣我喜欢天天编码,但真的我是很担心以后没技术市场

那我觉得你完全可以一个都不用
作者: black_zerg    时间: 13-3-2014 18:57
提示: 作者被禁止或删除, 无法发言 我确实不用,我以前还手写过jquery一样的库,写完了跟客户说用的jquery,反正他也看不出。没什么用就是无聊
作者: DDD888    时间: 13-3-2014 19:25
black_zerg 发表于 13-3-2014 19:57
我确实不用,我以前还手写过jquery一样的库,写完了跟客户说用的jquery,反正他也看不出。没什么用就是无聊

厉害

羡慕

可以说下如何可以成为JAVASCRIPT的高手吗?

我看到JAVASCRIPT就头疼,我喜欢写c#,delphi,C++等编译型语言
作者: black_zerg    时间: 13-3-2014 19:48
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 13-3-2014 21:08 编辑

javascript其实不错的,最重要就是记住他的变量范围都是跟函数的,另外有所谓closure。函数可以到处传,随时定义,很方便。类继承,实际上画个图也就理解了。还有一种所谓的函数继承,就是不用prototype类但达到类似类的效果。

我也说不清JS的语法是好是坏。反正语言么,有什么用什么。JS还是比较好玩的。不喜欢JS就用typescript很IDE友好。另外我实际上是Java出身的,五六年前才开始认真写JS,从用jquery到写插件到各种框架到手写流。到现在其实主要是爱好,跟工作不沾边。所以我也理解为什么这么多框架,都是无聊憋的。

我很想写个什么牛的东西玩,不过也想不出来有什么有用又还没人做的。跟工作不沾边,又没人讨论,很难有持续的动力。

DDD888 你不是c#的高手么,给我讲讲 有什么必学的技术? 除了单元测试哈哈。 我最近看看 c#,觉得其实比java灵活,这语言真不错。微软东西很技巧感。 wpf就蛮酷的。

作者: mason00    时间: 13-3-2014 20:28
有本书将javascript的很好,O'Riely的那个犀牛书。里面从javascript基础数据类型开始讲。所有的东西都是object,然后函数是一段存储语句的object,只是用()来执行了。()似乎就是eval()某种等价类型。然后介绍了几个最基本的预定义类型,array,date。然后就是几个最基本函数。object之所以可以扩展是因为它有一个特殊属性prototype。javascript似乎预先倾向功能聚合,而非对象继承。这个选择造就javascript的高扩展性和灵活性。对于面向对象语言学习出生的程序员,比如我来说是一种很大的价值冲击。

当时看javascript,觉得这个语言真操蛋。一帮业余工程师,临时搞出来的东西一样。完全没有C#那种理论与实际完美的结合。现在看来,是自己眼界大小了。不过做C#和delphi的那位似乎也去搞typescript了,没用过,但是我对那位大师是非常佩服的,弄出来的东西应该不差。

C#普通入门可以看《C#高级编程》(Professional C# Simon Robinson等人),就是Wrox的红皮书。进阶推荐那本《CLR via C#》Jeffery Richter。这本书和犀牛书我觉得是我看过的最好的讲变成语言的书。因为他们都会从语言所支持的基础数据类型开始将,然后再从语言提供的功能,也就是函数本身的定义和特性,在扩展到以这些功能而衍生出来的特性。数据类型和函数特性,我觉得是决定一个语言的最基本要素。这中概念基本就是从这两本书里面得到的。

我们应该推荐一下各自看过觉得不错的书。
作者: mason00    时间: 13-3-2014 20:41
我看的都是老书,最近是跟不上时代了,另外一种感觉就是,一旦你看过了某种程度的书之后,那些一般介绍性的书就会不想看了,觉得浪费时间,没有价值。比如《CLR via C#》之后,其他许多将.Net新功能,C#新特新的书我都看不下去,太幼稚了。

这里再推荐一本SQL的书吧,就不另外开贴了。《Learning SQL on SQL Server 2005》
http://shop.oreilly.com/product/9780596102159.do

这本书把SQL语言的特性从简到翻说得很清楚,例子也好理解。几个最重要的概念我都是在这本书中得到理清的
Join的类别: inner, corss, left, right
subquery
Aggregation and GROUP BY
Correlated Subqueries

前三个是面试中最常问到的,如果你能答出前三个的基本定义,基本你的SQL就是可以干活的。第四个就稍难了,我其实也是有时候懂,不用了又模糊了。每次模糊的时候,我只要翻翻这本书的例子,马上又清晰了。这也许就是一本好书的力量。

第四个实际中很少用到,要达到相同的效果,基本会采用迂回的多次query,而且说性能的话,第四个也不一定快,写得不好反而慢。它本身似乎带有递归的意思在里面,可以把复杂的sql写得很简洁,看得懂的人会知道写这个语句的人的程度,看不懂的人会觉得是一个神奇的query。很多技术狂热者,会喜欢这种程度的技术来区别自己和一般程序员。
作者: mason00    时间: 13-3-2014 20:45
犀牛书
http://shop.oreilly.com/product/9780596101992.do
作者: woodheadz    时间: 13-3-2014 21:03
mason00 发表于 13-3-2014 21:28
有本书将javascript的很好,O'Riely的那个犀牛书。里面从javascript基础数据类型开始讲。所有的东西都是obj ...

javascript就是一种操蛋的语言。编了几万行js代码之后我这个观点还是没有变。它在未来我相信会变成一种cli,新建立的高级语言以其为编译目标,就像typescript,coffeescript一样。
语言设计方面我是anders的粉丝。他在c#上的成就实在太过nb,无论是以前的元数据编程还是现在的await,都是令人惊艳的设计。新搞得typescript也是巨牛。实在是我心目中的第一号软件大牛。
作者: mason00    时间: 13-3-2014 21:11
woodheadz 发表于 13-3-2014 21:03
javascript就是一种操蛋的语言。编了几万行js代码之后我这个观点还是没有变。它在未来我相信会变成一种cl ...

是啊,你也是C#出身吗?能讲讲typescript吗?是要以javascript为编译目标吗?这个思路很耳熟,听过不少次。真把javascript当二进制目标啊。。。

不过现在的浏览器端变成就好像以前的汇编语言一样,依赖机器指令,依赖浏览器实现,也许typescript的思路是成为c/c++那样的浏览器端高级语言,呵呵,越往这个方向想,越觉得思路搭调啊
作者: black_zerg    时间: 13-3-2014 21:30
提示: 作者被禁止或删除, 无法发言 本帖最后由 black_zerg 于 13-3-2014 22:36 编辑

await 看起来跟 promise差不多么。 typescript真不错,好处就是可以直接用JS语法和各种现存库。在vs里跑得很溜。面向对象出身的转Javascript之后,往往忍不住要自己搞一个类继承机制,有了typescript就不用折腾了,super都支持了. JS最难看的地方就是类,这下解决了。 不过javascript有其简洁圆滑的特性,是表达力很强的语言。 typescript是javascript的super版,也就是说 javascript支持的,typescript都支持,这点是独一无二的,非常强势的地方。也就是说你如果不高兴,就在 ts文件里全写js也没问题,他的语法特性你可以一个不用。

这个特性是非常强的,秒杀dart, 在我看来coffeescript也没得比。说简单就是他基本上可以让你无缝使用其他的JS库,JS的所有技巧语法都能用,同时提供类和type,完美的IDE支持。我记得他的说法是其设计会尽可能贴近未来的JS规范,也就是 ECMAScript 6 , 7 之类,所以也许有一天浏览器就能直接跑(稍微改改)也说不定
作者: woodheadz    时间: 13-3-2014 21:36
mason00 发表于 13-3-2014 22:11
是啊,你也是C#出身吗?能讲讲typescript吗?是要以javascript为编译目标吗?这个思路很耳熟,听过不少次 ...

嗯,我也是vc++,delphi,c#一路搞过来的。
typescript和c#比较像,是很严谨优雅的类型安全的语言,编译结果是标准javascript,可以在主流浏览器上无障碍运行。牛逼的的是typescript完全兼容javascript语法,所以现有的js代码可直接和typescript结合而不用进行任何修改(当然用了js就没有编译时的类型检查)。
作者: woodheadz    时间: 13-3-2014 21:43
black_zerg 发表于 13-3-2014 22:30
await 看起来跟 promise差不多么。 typescript真不错,好处就是可以直接用JS语法和各种现存库。在vs里跑得很 ...

await是把异步编程从代码形式上完全变成同步;而promise只是方便了异步编程,把一个个嵌套的回掉变成了一个个非嵌套回掉罢了

作者: black_zerg    时间: 13-3-2014 21:53
提示: 作者被禁止或删除, 无法发言 多谢指点。 我本来做Java的,最近看c#,常有惊艳的感觉。woodheadz 感觉c# 或者说.net以后前景如何,什么技术比较值得深入?

typescript是近期我唯一看好的javascript的前端技术,说实在话,如果有人跟我说用了typescript团队效率提高50%我还真信。 这东西用来开发产品或者库绝对是利器。
作者: woodheadz    时间: 13-3-2014 22:15
black_zerg 发表于 13-3-2014 22:53
多谢指点。 我本来做Java的,最近看c#,常有惊艳的感觉。woodheadz 感觉c# 或者说.net以后前景如何,什么技术 ...

我一直把.net视为我最喜欢也是最擅长的技术,但说实话,我觉得他在走下坡路。
它和ms绑得太死了,而ms最近几年被苹果google搞得方寸大乱,技术发展线路乱七八糟。一直被视为下一代ui技术的wpf居然一声不吭就给你放弃了,就留下点xaml在win8里继续挣扎。后端情况好些,但如果ms衰落了,它可不是开源的,不见得会有java这样的好命。
作者: mason00    时间: 13-3-2014 22:52
woodheadz 发表于 13-3-2014 22:15
我一直把.net视为我最喜欢也是最擅长的技术,但说实话,我觉得他在走下坡路。
它和ms绑得太死了,而ms最 ...

我估计.net的人都这么感觉,微软没方向了。有点要回去弄c++的意思。SilverLight,WPF,甚至WCF,都有些一脚踏空的感觉。再加上window 8有点抛弃desktop的意思,真不知道以后什么思路了。

关键是手机和tablet这样的移动平台,windows 8还是太贵,太慢了。新平台微软应该单独出操作系统,老是统一天下的思路,把什么都要做到window里面去,反应速度实在太慢了。

按我说,windows 8应该出桌面版,依旧针对桌面特性的应用。windows RT作为移动平台的基础,可以跑在桌面版之上,但是可选的,桌面还是以桌面为主。如果速度太慢,干脆不支持桌面也行。

windows RT跑在移动平台上,单独优化性能和语言。苹果的IOS应该也是分版本的吧,windows 8把桌面和tablet混在一起的做法,很糟糕啊
作者: DDD888    时间: 14-3-2014 05:40
本帖最后由 DDD888 于 14-3-2014 06:49 编辑
black_zerg 发表于 13-3-2014 20:48
javascript其实不错的,最重要就是记住他的变量范围都是跟函数的,另外有所谓closure。函数可以到处传,随时 ...


我写C#主要是在asp.net mvc上,写网站,我的目标是写几十亿人都同时使用的网站应用,但现在写的网站一周访问也就120万个request

写C#关键要做的是时刻profile所写的代码,那时间久了就知道哪些代码是花时间的啦,能避免就可以避免啦
作者: Jay@Au    时间: 14-3-2014 08:36
mason00 发表于 13-3-2014 23:52
我估计.net的人都这么感觉,微软没方向了。有点要回去弄c++的意思。SilverLight,WPF,甚至WCF,都有些一 ...

国内大的公司好像都是java的天下,澳洲好像.net更流行。感觉微软这些新的玩意都有点抄袭改进嫌疑。c#,.net,win8,typescript。相比typescript, dart, coffee script , typescript 的确优化了其他两个的缺点。微软吸收技术后也做了很大改进,而且结合了它的强项,所以开发上手更容易。
微软从全球角度讲,的确在走下坡路了,因为多年来已经没有什么真正意义上的创新了。
作者: woodheadz    时间: 14-3-2014 11:44
mason00 发表于 13-3-2014 14:37
这个倒是,SQL数据访问什么的,应该还是在服务器端。

我在想前台文件现在开始变大是一个问题。随便放几 ...

全部手写就超不过2m
我们的这个系统需求相对比较特别,所以除了jquery和我自己knot.js之外没用什么第三方框架。但依然达到接近两M的容量。
不要低估现在前端应用能达到的复杂度,尤其是各种各样的单页应用。
作者: DDD888    时间: 14-3-2014 12:21
woodheadz 发表于 14-3-2014 12:44
我们的这个系统需求相对比较特别,所以除了jquery和我自己knot.js之外没用什么第三方框架。但依然达到接 ...

我想大概是你们的系统要自己弄那些图形啦
作者: DDD888    时间: 14-3-2014 13:23
woodheadz 发表于 13-3-2014 22:36
嗯,我也是vc++,delphi,c#一路搞过来的。
typescript和c#比较像,是很严谨优雅的类型安全的语言,编译结 ...

请教下visual studio 2013 typescript 报下面的代码出错
date.toGMTString()

Error        60        The property 'toGMTString' does not exist on value of type 'Date'.       
我该如何解决啊?


作者: DDD888    时间: 14-3-2014 13:24
和下面的代码

$("#id").size();

Error        8        The property 'size' does not exist on value of type 'JQuery'.

作者: mason00    时间: 14-3-2014 14:03
DDD888 发表于 14-3-2014 13:23
请教下visual studio 2013 typescript 报下面的代码出错
date.toGMTString()

你调试的时候看date什么类型,有没有你call的那个方法,注意大小写
作者: mason00    时间: 14-3-2014 14:07
DDD888 发表于 14-3-2014 13:24
和下面的代码

$("#id").size();

估计对象都没找到
作者: DDD888    时间: 14-3-2014 14:10
不是说javascript代码直接复制到typescript代码里就行了?为啥还会有错?
作者: mason00    时间: 14-3-2014 15:55
DDD888 发表于 14-3-2014 14:10
不是说javascript代码直接复制到typescript代码里就行了?为啥还会有错?

你用了jQuery,加引用了吗?原生代码是可以拷贝的
作者: DDD888    时间: 14-3-2014 16:04
mason00 发表于 14-3-2014 16:55
你用了jQuery,加引用了吗?原生代码是可以拷贝的

是的,我用了jquery
作者: black_zerg    时间: 14-3-2014 19:22
提示: 作者被禁止或删除, 无法发言 你得把头文件加上
作者: DDD888    时间: 16-3-2014 12:38
black_zerg 发表于 14-3-2014 20:22
你得把头文件加上

我用nuget将jquery已引用到solution里啦,还要在ts源程序里加任何东西吗?




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/bbs/) Powered by Discuz! X3.2