js学起来难吗?

这个JS效果实在太难分解出来了
来源:csdn
【目标:http://galleria.io/themes/twelve/
改了一下g.min.js
只用两张图片,但总是提示:
但直接http://192.168.1.100/static/i/s2013/2.jpg就可以打开,不知道是什么原因了,g.min.js里面也没找到有什么限制的】
CSS无法加载20秒后。
致命错误:舞台宽度或高度太小,无法显示的画廊。追溯到措施:宽度:776px,高度:18px的。
Mapleleaf123:
这个是分解后的,帮看看到底是哪错了?
Mapleleaf123:
自己顶上去
window.STATIC_URL="/static/";window.THEMES_URL=STATIC_URL+"themes/"})(jQuery);var STATIC_URL="/static/",G_DEMO_IMAGES=[{title:"Memory Maker",thumb:STATIC_URL+"i/s2013/2s.jpg",image:STATIC_URL+"i/s2013/2m.jpg",big:STATIC_URL+"i/s2013/2b.jpg",description:"A retro camera stilleben."},{title:"Athabasca Rail",thumb:STATIC_URL+"i/s2013/3s.jpg",image:STATIC_URL+"i/s2013/3m.jpg",big:STATIC_URL+"i/s2013/3b.jpg",description:"The Athabasca River railroad track at the mouth of Brul\u00e9 Lake in Alberta, Canada."},{title:"New York City",thumb:STATIC_URL+"i/s2013/4s.jpg",image:STATIC_URL+
"i/s2013/4m.jpg",big:STATIC_URL+"i/s2013/4b.jpg",description:"Vintage skyline in New York City."},{title:"Works for Video too",video:"http://vimeo.com/",thumb:"http://b.vimeocdn.com/ts/169/759/0.jpg",description:"Integrated API for YouTube, Vimeo and Dailymotion videos"},{title:"Interior convento",thumb:STATIC_URL+"i/s2013/5s.jpg",image:STATIC_URL+"i/s2013/5m.jpg",big:STATIC_URL+"i/s2013/5b.jpg",description:"Interior view of Yuriria Convent, founded in 1550."},{title:"Oxbow Bend outlook",
thumb:STATIC_URL+"i/s2013/6s.jpg",image:STATIC_URL+"i/s2013/6m.jpg",big:STATIC_URL+"i/s2013/6b.jpg",description:"View over the Snake River to the Mount Moran with the Skillet Glacier."},{title:"Hazy blue hour",thumb:STATIC_URL+"i/s2013/7s.jpg",image:STATIC_URL+"i/s2013/7m.jpg",big:STATIC_URL+"i/s2013/7b.jpg",description:"Hazy blue hour in Grand Canyon. View from the South Rim."},{title:"Haute Severaisse valley",thumb:STATIC_URL+"i/s2013/8s.jpg",image:STATIC_URL+"i/s2013/8m.jpg",big:STATIC_URL+"i/s2013/8b.jpg",
description:"View of Haute Severaisse valley and surrounding summits from the slopes of Les Vernets."},{title:"Bohinj lake",thumb:STATIC_URL+"i/s2013/9s.jpg",image:STATIC_URL+"i/s2013/9m.jpg",big:STATIC_URL+"i/s2013/9b.jpg",description:"Bohinj lake (Triglav National Park, Slovenia) in the morning."},{title:"Bowling Balls",thumb:STATIC_URL+"i/s2013/10s.jpg",image:STATIC_URL+"i/s2013/10m.jpg",big:STATIC_URL+"i/s2013/10b.jpg",description:"Mendocino county, California, USA."}]
这是g.min.js里的部分代码,要改你应该也是先还原JS才改
run: function(e, q, w) {
q = q || "#demo";
function() {};
m.theme = F[e];
m.utils.loadCSS(THEMES_URL + e + "/" + e + ".css", "galleria-theme",
function() {
h(q).galleria({
responsive: !0,
height: 0.5,
dataSource: G_DEMO_IMAGES,
maxVideoSize: 1300,
extend: function(e) {
w.call(this, e)
他这里还有吊一个CSS,这个CSS路径放对了么
Mapleleaf123:
果然,放回到JS里面那个图片数据组,另外就是少一/static/themes/1/1.css,
放回去,可以播放了,但还提示:
Fatal error: Could not extract a stage height from the CSS. Traced height: 0px
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动目前在自学JavaScript,感觉非常的吃力,是不是我的方法不对?
12:03:02 +08:00 · 17336 次点击
我自己的学习方法是,看JavaScript DOM编程艺术,第一章节我研究了近3个星期,始终不明白它里面的讲的对象与数组与代码表示的意思,然后实现是看不下去了;转而去看妙味课堂Javascript视频教程,里面前5节就是JS学前预热课程,这5节课程重复看了10遍以上,不停地练习视频里的例子,自己已经可以写点简单的JS效果了;然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等
第 1 条附言 &·&
13:40:24 +08:00
看了几个老兄都在说要有目标的学习,这样才能学好,谢谢
77 回复 &| &直到
08:00:00 +08:00
& & 12:08:03 +08:00
不如先学下python或者PHP吧,比较简单,好上手,成就感来得快
话说,从初级向中级进步路上,我觉得JS比上面2者难得多
& & 12:09:50 +08:00
犀牛书 javascript the good part
& & 12:12:12 +08:00
@ 犀牛书比JavaScript DOM编程艺术更加难啃,我看了3页就放弃了,直接看JavaScript DOM编程艺术+视频
& & 12:13:38 +08:00
你要是编程零基础就别看什么编程艺术了,找个傻瓜书啥的
& & 12:14:07 +08:00
我觉得反复看蝴蝶书就好了。写代码主要在写。读书可以大略地读,快速看完,不懂也没有关系,看完之后根据自己仅有的知识和理解去写,一遍遍试错的过程中就能真正地理解编程语言了。
& & 12:21:59 +08:00
目前我也在学 JavaScript ,前期我也是先看 JavaScript DOM 编程艺术,在练习完里面的那个图片库案例之后我就开始看 JavaScript 高级程序设计了。
JavaScript DOM 编程艺术相对来说还是比较好理解的吧?我个人觉得里面的例子我自己都可以理解。只不过 DOM 编程艺术里面并没有详细地教你 JavaScript 最基础的东西。我个人感觉只是纯粹在讲关于 DOM 这方面的内容。
而 JavaScript的 基础知识个人认为在 JavaScript DOM 编程艺术里面学不到的。
基础知识还是看JavaScript高级程序设计 或者JavaScript权威指南。学完整本书的内容应该能够掌握大部分知识了吧,我觉得。因为自己还在学习当中,不好下结论。
另外上次有人在 V2EX 上发了个 如何正确学习 JavaScript
的链接, 我顺便贴上来吧。
里面的内容是围绕 JavaScript 高级程序设计 和 JavaScript 权威指南写的,如果还没有这两本书最好去买本吧。
搭车请教一下, Python 和 PHP 真的比 JavaScript 简单吗?对于入门来说。我本来自己打算先学好 JavaScript 和基础的 HTML 和 CSS 再去系统学习 PHP 或者其他后端语言。如果说 Python 和 PHP 真的比较容易入门,那么有什么好方法入门呢?
& & 12:23:14 +08:00
你不明白说明你没有基础,先看一些基础的书吧。可以翻翻Code Complete里面讲数组、对象。
& & 12:34:00 +08:00
@ 老兄讲的非常符合我现在的情况,主要还是问题是基础差了,谢谢
& & 12:34:56 +08:00
要有目标(例如必须要在短期解决的问题)才会有动力, 然后边看边实践.
& & 12:37:04 +08:00
先找本书或者网络教程学习一下基础语法之类的
看书的时候不容易理解也没关系, 看过去, 有了后面的知识回头再去研究前面不明白的地方就豁然开朗了
& & 12:40:06 +08:00
买了一本书研究中~~
& & 12:42:28 +08:00 via Android
因为你没有了解过内存层面的东西,所以对数组没有具体的认识。
但是,记住它的特点就好,用久了就知道了。
& & 12:42:46 +08:00
一本语言精萃足已
& & 12:43:00 +08:00 via Android
有一种学习方式叫Bug驱动学习
& & 12:43:37 +08:00
语言精粹用来自学不是什么好选择。。。
& & 12:44:59 +08:00 via Android
@ 怎么可能足矣,人家没有其他语言基础,连数组是什么都没理解
& & 12:46:18 +08:00 via iPhone
先玩jquery吧。玩熟了再研究javascript。
jquery很容易上手。
& & 12:49:31 +08:00
你学习的姿势不对
& & 13:03:59 +08:00
别听那些说要学别的语言的, 光装环境就烦死人.
学习要有一个目标才能学好, 没有目标跟容易在原地踏步, 所以先给自己定个目标, 比如幻灯片等等
至于对象, 闭包什么的, 那些都是概念, 不理解也不要紧, 会用即可, 用多了自然就会了.
同样推荐从jquery入门, 你有了基础, 看jquery会更方便, 推荐过一遍w3school上面的教程.
PS: 生活中喜欢学习的真难找啊, 网上到是有很多.....
& & 13:09:25 +08:00
别死看书(除非是要考试),想想有啥想做的小玩意,努力做出来。然后再回过头来看书。
现在不是很多想
这样在线学习的网站,可以看看
& & 13:11:34 +08:00
别怕,学Javascript是有用的,web现在呈现一个js大一统的趋势,学Javascript大方向上错不了。
但是Javascript是一门设计很不完善的语言,很多琐碎的语法细节会让你花掉很多时间。
建议还是结合到具体项目来学习。我说的项目不用很大,比如自己打个博客什么的就够了。
& & 13:19:18 +08:00
你以前学过其他的语言吗?
& & 13:28:38 +08:00
我推荐先学 jQuery,比原生 API 容易上手。
其实入门的第一步是 w3school(去操作一下里边的演示,然后随便修改、运行一下),然后是一本详细的书(比如 JS 权威指南 6),下一步是学习高级用法(面向对象、设计模式什么的),最后是应用(随时参考 MDN、webplatform 的文档)
& & 13:33:54 +08:00
@ 没有学的其它的语言
& & 13:40:48 +08:00
在线教程看这里:http://www.w3school.com.cn/js/index.asp,可以参考。
学JAVAScript先看基础教程语法,弄懂逻辑,学下基本算法(类是数据结构),看例子
推荐这本书:《JavaScript高级程序设计(第3版)》http://product.dangdang.com/.html#ddclick?act=click&pos=_1_p&cat=01.00.00.00.00.00&key=javascript&qinfo=&pinfo=411_1_72&minfo=&ninfo=&custid=&permid=&ref=http%3A%2F%2Fsearch.dangdang.com%2F%3Fkey%3Djavascript%26category_path%3D01.00.00.00.00.00&rcount=&type=&t=0
希望对你有帮助
& & 13:42:20 +08:00
现在一般都是事件驱动式学习。
& & 13:42:53 +08:00
& & 13:43:41 +08:00
@ 事件驱动式学习是如何学习?
& & 13:50:36 +08:00
@ 就是有需求、有任务,然后针对这个任务,去学习。
也可以理解为“目标”
& & 13:52:18 +08:00
常用的算法Javascript版参考这里http://www.nowamagic.net/librarys/veda/detail/167
& & 13:54:43 +08:00
1. JavaScript DOM编程艺术 这本书最好的地方在于你不需要关心javascript是什么就能做出一些效果来,让新手有兴趣玩下去
2. javascript 是一门语言,dom 不是javascript的一部分 dom 是 Document object model 就是浏览器提供的用来操作文档的一种办法,但它本身是低级或中级的api,也就说面向的应用方式相对底层,所以用起来很不方便,不同的浏览器实现也有差异,所以用一些dom 库会更好,如jquery,要分清楚什么是语言,什么是平台提供的api。
3. 因为大部分时候javascript面对的平台是浏览器(node.js是另一个方向),所以可以通过实现一些浏览器上的小功能去学习,jquery是个易用的东西,他能帮助很容易你将学习到的javascript的语言特性呈现出来。
4. 现在这个阶段了解原生的dom接口意义并不大,因为像jquery,mootools,yui这些库已经把dom能做到的99%的事情都实现了,能用更方便的接口为什么要用原生呢,用原生本身就是对项目的不负责,因为跨浏览器本身会遇到的问题比你想想的要多太多了,如果看过一些库源码相信可以了解到,不但会降低项目的稳定性,还会带来各种维护性问题。
推荐的书目:
1. javascript 权威指南(David Flanagan)
2. JavaScript高级程序设计(Nicholas C. Zakas)
3. javascript 语言精粹(Douglas Crockford)
4. JavaScript设计模式(Addy Osmani)
& & 13:54:49 +08:00
成长是有个过程的。我当时也经常在问自己,虽然现在JS很久没写,感觉也差不多。懂了语法,剩下的只有算法要靠自己想了。
& & 13:54:57 +08:00
同意“就是有需求、有任务,然后针对这个任务,去学习。”
@
这个方法比较好。
在有Javascript基础的前提下,找一个具体的代码去读,去练习。
我的VBSript就是这么学习的
& & 13:57:38 +08:00
@ JS 不太需要其他语言的基础就可以学习的
& & 14:11:35 +08:00
&现在的问题是,我还是不明白什么是对象,什么是数组,什么是闭包,怎么隐藏全局变量,等&
这些程序概念的出现都是为了解决特定问题的,显然你没有遇到,或者还没正视这些问题。
刚开始编程的时候,你肯定会用大量的变量,x y z x0 x1 x2 ... 越来越多,多到你都不知道要怎么给它们起名字,(除非你还在写很小的程序),数组就是为了帮你分组一些数据用的。
somethings = [...]
你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...
然后你会学到循环,连索引都不用自己打了,用循环变量来统领它们。
for(i=0;i&i++) doSomething(somethings[i]);
然后你会接触到越来越强大的指令,编程的过程就是循序渐进的。
对象可以让你以更宏观的角度去解决问题。
闭包可以让你区分或隐藏数据(不要问我为什么要隐藏)。
不过我还是不理解你为什么会吃力……有人逼你一个星期要学完吗?
& & 14:26:14 +08:00
@ 讲的太好了,用很直白的语言说明了JS的对象,数组等起的作用;
吃力是因为学一个知识点,需要很长时间的理解和不断的练习才明白它要作用和用法
& & 14:31:08 +08:00
@ 多动手,多看书,耐心。一个概念没看懂,就换几本书看,不同的书会从不同的侧面来解释同样的事物。当你看懂了,再回过头就很容易了。
“然后重新去看JavaScript DOM编程艺术,感觉很容易上手,没有刚刚开始看时的迷惑”
这就是一个很好的开始。
& & 14:53:30 +08:00
JavaScript高级程序设计(Nicholas C. Zakas)
& & 14:56:49 +08:00
嗯 你是过来人 哈哈
& & 14:58:40 +08:00
&& 你再也不用去给里面的东西起名字了,而可以通过索引来引用它们 somethings[0] somethings[1] somethings[2] ...
Bad practice.
建议一定要节省变量或者有一定洁癖的话,用Object搞定。
var setting = { url: '', type: '' };
这样比 var url = '', type = '';简洁。
但是不给变量起名字,相当于 var a=0, b=0, c=0;,很明显不符合规范。
& & 15:09:23 +08:00
风格习惯是一回事,但我想表达是这样的例子,我看过很多同学这样写程序(当然,是在他们还不懂数组的时候):
var ball0 = new Ball();
var ball1 = new Ball();
var ball2 = new Ball();
// loop
ball0.update();
ball1.update();
ball2.update();
ball0.render();
ball1.render();
ball2.render();
...
而用数组就不再需要起这么蹩脚的名字了:
var balls = [];
for(var i=0;i&i++) balls.push(new Ball());
// loop
for(var i=0;i&i++) {balls[i].update(); balls[i].render()};
& & 15:19:20 +08:00
你上面的例子本身就需要用到数组,因为是大量建立同一类型的对象。为了后期对这些对象进行批量维护,也需要建立数组。
但是 “你再也不用去给里面的东西起名字了,而可以通过索引来引用它们” 这句是不对的。因为在很多情况下,建立变量(好吧,其实你建立的数组也是一个变量的值)来储存数据并不适用你说的情况。比如要建立一个配置表,之类。
代码是给人读的,保持易读性相当重要。
& & 16:34:52 +08:00
为何非常吃力……,我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……
& & 16:39:03 +08:00
@ 我也是看完《javascript DOM 编程的艺术》后选择这本《JavaScript高级程序设计(第3版)》来看的。
& & 17:03:15 +08:00
不建议初学者学习js
& & 17:06:22 +08:00
Javascript非常接近两门门非常优秀的语言(C + Lisp). 其实javascript也非常优秀。
推荐看这两本书,很薄,很无压力:
Javascript Good Part
Functional Javascript
踩坑踩怕了,看这个:
建议跟着这里的教程学一遍:
书,推荐: turing的《Javascript 基础教程》
《Javascript高级编程》,不推荐。如果没有大量的js实战做经验,这本书属于自虐。
《Javascript权威指南》,不推荐,理由同上。此书的厚度等同于新华字典,通读纯属自虐。当工具书翻看非常合适。
关于DOM方面,看书不合适,看“编程艺术”类的书更不推荐,没有大量经验,不踩大量坑,对此类书不会有什么共鸣,反而会对初学者造成很多束缚。
学习DOM推荐w3cschool的文档,过一遍非常轻松.
& & 17:15:32 +08:00
javascript的dom操作很蛋疼 所以我觉得还是python php好 一边写网站一边练js
& & 17:18:25 +08:00 via Android
所以我个人觉得那个入门先学C的年代挺好的,我是从C入门的,后面的学习理解起其他需要来都还是很快的。
& & 17:24:52 +08:00
有关看技术类的书籍我来说一下吧,像楼主那么看,一章看几个星期,看不懂是正常的,不懂的东西,再盯着看也不一定懂。读书一定要快,迅速看完一本书,能记住多少就记住多少。离散的点多了,就串成线了。。。在没有认识自然数的时候,就想找到1~10中所有的点,是不太现实的。
& & 17:33:59 +08:00
@ 不明白什么是对象,什么是数组,什么是闭包
这个不是JS的问题,而是计算机编程基础,看来LZ没有计算机专业的背景啊,需要了解一些计算机编程的基础,任何一门语言C/C++/Java/C#入门比较推荐,另外就是基本的数据结构和算法
如果LZ学过C啊,数据结构算法啊之类的,学学JS也还不错
如果LZ真的是完全从零开始学编程,JS确实不是很推荐,对以后的学习可能会造成不好的影响
而且你说的书基本上都对你来说太难了,因为你很多基础概念不熟悉,不知道所以然
另外JS最麻烦的地方就是 DOM操作 面向对象编程 以及 闭包,这些东西至少要你比较了解基本的程序开发,数据结构和熟练使用简单的JS或者jQuery之类的类库之后再慢慢啃
& & 19:59:32 +08:00
先有别的语言的基础当然会学的快……所以个人感觉重点在于没有捷径……
& & 20:15:12 +08:00
我认为,没有编程基础的时候还不适合学 JavaScript,这门语言多少有点非主流,建议先通过 C 或者 C++ 来学习一下最基本的编程,把对象、数组、作用域这些东西理解了,再学 JavaScript。按这样的流程,你应该会觉得 JavaScript 这门语言本身很简单、很单纯,需要下功夫的地方是活用、善用。
《JavaScript DOM 编程艺术》这本书是最早让我迷上 JavaScript 的书。把书上代码都敲下来,一个 Demo 就出来了,这 Demo 比其他语言在终端里面的 output 生动太多了,兴趣一下子就上来了。当然,这本书里涉及的知识还是比较窄的,系统学习还需要其他的书。
& & 20:33:17 +08:00
& & 21:04:01 +08:00
javascript哪里接近lisp了。。。
& & 21:08:32 +08:00
@ 谢谢提醒
& & 21:31:40 +08:00
@ 为何是@我…………
& & 21:39:04 +08:00
学js时花了几天写了个chrome插件,算是了解了语法
我觉得些chrome插件不错,学习的时候可以把重心放在js语言上
& & 22:12:48 +08:00
@ &我觉得js是超级蠢的语言了,弱类型而且很多情况不用考虑溢出……&
我把&超级蠢&理解成“烂”。
我一直很喜欢javascript这门语言,希望能推广一下javascript好的部分,减少对js误解。
P.S:
&弱类型而且很多情况不用考虑溢出……& 求详解.
& & 23:06:13 +08:00 via iPad
& & 23:06:41 +08:00
必然是项目驱动学习更好啊,最近实习要做网页,看了看就得上手了,用到不会的立马google,然后现学现用,学起来很快的。不要想把细节问题搞清楚,有些坑说不定一辈子也碰不到,所以先掌握核心,遇到了自然再搜
& & 23:19:46 +08:00
如果致力向前端发展,这儿有个前端知识结构,明确大的行进方向
& & 23:31:01 +08:00
寒假刚开始在Codecademy上面学Javascript现在学到对象 觉得挺好上手的 在学校有C++的基础什么觉得相比之下简单了很多http://www.codecademy.com/
& & 08:16:08 +08:00
@ 哥们儿,我觉得你说的很有道理,我就一直这么做的
& & 09:44:33 +08:00
找个让自己开心的学习途径,我跳跃度高,你看不懂的话自行补充:
1 做码农最需要的是要会“拼.字.符.串”,跟什么计算机基础关系不大,好好练习object,string,array,正则(一点点)就可以了(此时此刻别碰jq)
2 然后遇到前端的实战了,需要搞dom,打开jq源代码,认真了解jq关于dom处理的每个方法怎么写的,为啥这么写。
3 其他的诸如ajax什么的参见上一条
帮你减轻负担:
*市面上大部分的书都是参考资料不是实战指导,用不着天天抱着个参考资料死磕,除非你已经有其他语言的底子,多参与实战吧,github上有“todo项目”
,自己独立做一次,你肯定就入门了。
*别对框架太认真,包括jq在内都不是必须的,他们只不过是学习资料而已。
& & 09:45:27 +08:00
看看 CoffeeScript?
JS 本身不是严谨的语言, 语法比较杂, 用 CoffeeScript 这个子集会好一点,
结合任务做做具体的例子会比较好, 不要急着去理解 JS 具体的意思.
难道没有人和楼主说过 JS 其实是个大坑么?
& & 09:50:08 +08:00
@ 比起php什么的,js简直就是跳板了。
& & 10:08:56 +08:00
有一个建议是,在学javascrip的时候,千万千万不要碰jQuery...
& & 10:12:24 +08:00
各种库用多了,开始确实比较想不通,也没必要一定跟着某些书的思路走。
& & 11:28:12 +08:00
@ 我师傅也跟我说过这样的话,所以目前的学习方法只学原生,jQuery暂时不碰它
& & 11:39:24 +08:00
请直接学angular, javascript 本身由于10天设计出来的语言,问题很多. 建议从框架入手.
而且现在是2014年了, 请直接从angular开始学. 或者是ember, 等. 然后在去学习什么DOM操作什么的
& & 11:46:38 +08:00
和楼主一样,第一本js书是这本JavaScript DOM编程艺术,后来发现看错书了,里面基础知识讲得太少,《JavaScript高级程序设计》必须要买,但是这本书也有缺点,提到太多其他语言(java)了,java也不懂肿么办,只有慢慢啃了,我相信,花多点时间,一定有所成。
& & 13:29:30 +08:00
& & 14:49:12 +08:00
@ 我说js是很蠢的语言是指,相对于其他传统高级语言,C,C++,java,js的限制非常的少,数据结构之间的转换非常简单,而且基本不用考虑语法和算法问题,弱类型也是这个意思
& & 16:41:08 +08:00
分享一下全无编程基础学JS的过程,
第1个月,看一套入门视频,对HTML,CSS,JS有个初步概念,练习
第2,3月,犀牛书(很无聊),W3School,中间断断续续,看见什么好玩就玩什么,HighCharts,bootstrap,jQuery,用框架可以很快做出炫酷的东西来,成就感会让人继续学下去。
第4月,正好选了个相关的毕业设计题目,做一个完整的静态网站。
...
后来,研究JavaScript高级程序设计,编写高质量代码,高性能JavaScript,JavaScript设计模式这几本
------
总结一下学JS要循序渐进,每个阶段要看适合该阶段的书,理解是基于实践经验的
& & 21:48:19 +08:00
@ 强类型/弱类型, 编译型/脚本型,各有优势没什么好讨论的,看个人喜好。
关于算法,主要使用js的场景很少会考虑的算法问题。javascript支持high-order function,做算法也非常优秀。
一个“平均阻尼”法的算法,找函数的不动点。
Lisp实现:
(define tolerance 0.00001)
(define (fixed-point f first-guess)
(define (close-enough? v1 v2)
(& (abs (- v1 v2)) tolerance))
(define (try guess)
(display guess)
(let ((next (f guess)))
(if (close-enough? guess next)
(try next))))
(try first-guess))
Javascript实现:
var toerance = 0.000001;
function fixed_point (f, first_guess) {
function close_enough (v1, v2) {
var delta = Math.abs(v1 - v2);
return delta &
function tryit (guess) {
console.log(guess);
var next = f(guess);
if (close_enough(guess, next)) {
tryit(next);
return tryit(first_guess);
}
用它算一下 x^x = 1000 的一个根。
fixed_point(function(x) {
return Math.log(1000)/Math.log(x)
& & 21:51:54 +08:00
& & 22:46:59 +08:00
@ 为你认真态度点个赞
& · & 1829 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 83ms · UTC 11:06 · PVG 19:06 · LAX 03:06 · JFK 06:06? Do have faith in what you're doing.如何正确学习JavaScript | 设计达人
爱设计,爱分享。
如何正确学习JavaScript
赞助商链接
既然你找到这篇文章来,说明你是真心想学好JavaScript的。你没有想错,当今如果要开发现代网站或web应用(包括互联网创业),都要学会JavaScript。而面对泛滥的JavaScript在线学习资源,却是很难找到一份高效而实用的方法去学习这个“web时代的语言”。
有一点需要注意,几年前我们需要知道一个真正的服务器端语言(比如PHP,Rails,Java,Python 或者 Perl)去开发可扩展,动态的,数据库驱动的web应用,而现在只用JavaScript就可以实现了。
学习时长:6~8周
学习前提:中学水平,无需编程经验
在Reddit上创建了一个学习小组
上面的课程大纲提供了一个结构化和富有启发性的学习线路,从初学者到有所建树,把JavaScript学对学透。
不要这样学习JavaScript
不要一开始就埋头在成堆的JavaScript在线教程里 ,这是最糟糕的学习方法。或许在看过无数个教程后会有点成效,但这样不分层次结构地学习一个东西实在是十分低效,在实际用JavaScript建立网站或web应用时你还是会频繁的卡住。总的来说,这种学习方法会让人不知道如何将语言当做工具来使用——当做个人工具来用。
另外,也许有人会建议从尊敬的JavaScript教父Douglas Crockford写的《JavaScript语言精粹》开始学习JavaScript。然而,虽然Crockford先生对JavaScript无所不知,被誉为JavaScript世界的爱因斯坦,但他的《JavaScript语言精粹》并不适合初学者学习。这本书没有通透、清晰、明了的阐述JavaScript的核心概念。但对于更高级的学习路线,我倒会建议你看看Crockford先生的视频。
还有,不要只从Codecademy等网站学习JavaScript,因为即使知道怎么编写一大堆JavaScript代码小片段,还是不能学会怎么建立一个web应用程序。即便如此,在后面我还是会建议把Codecademy当做补充的学习资源。
本课程资源
更新:Reddit用户d0gsbody4月8号在Reddit上建立了一个学习小组。他和其他组员都非常积极和乐于助人。我建议你加入这个小组,他们会让你保持积极性且帮助你更好的学习JavaScript。毕竟独自折腾JavaScript还是有点难度的。链接:
请在以下两本书中选一本,第一本比较适合有编程经验的人,而另一本则适合完全没有编程经验的初学者。我个人推荐第一本书,因为作者对各个知识点都阐述得非常好且涵盖了一些高级JavaScript知识点。但是,要看懂这本书你至少要对web开发有一定的基本了解。所以,如果你有一点点编程经验或者web开发经验(不一定是JavaScript),那就买这本书吧。
纸质版(英文) :
纸质版(中文) :
Kindle版(英文):
Kindle版(中文):
如果你没有编程经验,可以买这本:
纸质版(英文) :
纸质版(中文) :
Kindle版(英文):
Kindle版(中文):
免费注册,这是一个编程领域的问答论坛。在这里提问题得到的回答比Codecademy要好,哪怕你的问题非常基础,看起来很傻(记住,从来没有愚蠢的问题)。
免费注册,这是一个在线学习平台,你可以直接在浏览器里面写代码。
上的一些博文,包括对象,闭包,变量的作用域和提升,函数等等。
JavaSctipt学习路线
完成整个课程大纲需要花上6~8周的时间,将学会完整的JavaScript语言(包括jQuery和一些HTML5)。如果你没有时间在6个星期里完成所有的课程(确实比较有挑战性),尽量不要超过8个星期。花的时间越长,掌握和记忆各种知识点的难度就越大。
1~2周(简介,数据类型,表达式和操作符)
如果你还不是很了解HTML和CSS,完成Codecademy上的任务。
阅读《JavaScript权威指南》或者《JavaScript高级程序设计》的前言和第1~2章。
十分重要:在书中遇到的每个样例代码都要动手敲出来并且在火狐或Chrome浏览器控制台中跑起来、尽量蹂躏它(做各种试验)。也可以用,但不要用Safari浏览器。我建议用火狐搭配去测试和调试代码。浏览器控制台就是可以让你编写和运行JavaScript代码的地方。
完成Codecademy 上的Introduction to JavaScript部分。
阅读《JavaScript权威指南》第3~4章。或者阅读《JavaScript高级程序设计》第3~4章。你可以跳过位操作部分,在你的JavaScript生涯中一般不会用上这个。
再次说明,记得要不时停下来把书本的代码敲到浏览器控制台里(或者JSFiddle)做各种测试,可以改变几个变量或者把代码结构修改一番。
阅读《JavaScript权威指南》第5章。至于《JavaScript高级程序设计》则暂时没有阅读任务,因为前面已经把相关知识覆盖了。
完成Codecademy 上的2~5部分。
3~4周(对象,数组,函数,DOM,jQuery)
以下三选一:
阅读我的博文.
阅读《JavaScript权威指南》第6章。
阅读《JavaScript高级程序设计》第6章。注意:只需要看“理解对象”(Understanding Objects)部分。
两本书会涉及更多的一些细节,但只要看完我的博文,你可以完全放心地跳过这些细节。
阅读《JavaScript权威指南》第7~8章或者《JavaScript高级程序设计》第5和7章。
此时,你应该花大量时间在浏览器控制台上写代码,测试if-else语句,for循环,数组,函数,对象等等。更重要的是,你要锻炼和掌握独立写代码,不用借助Codecademy。在Codecademy上做题时,每个任务对你来说应该都很简单,不需要点帮助和提示。如果你还卡在Codecademy上,继续回到浏览器上练习,这是最好的学习方法。就像詹姆斯年轻时在邻居的篮球场上练球,比尔盖茨在地下室里学习编程。
持续地练习,这一点点的进步积累起来效果会非常惊人。你要看到这个策略的价值,相信它是可行的,全心投入进去。
Codecademy会造成已掌握的错觉。
使用Codecademy最大的问题是,它的提示和代码小片段会让人很容易就把答案做出来,造成一种已经掌握这个知识点的错觉。你可能一时看不出来,但这样做你的代码就不是独立完成的了。
但目前为止,Codecademy依然是学习编程的好帮手。特别是从一些基本的代码结构如if语句,for循环,函数和变量去指导你了解小项目和小应用的开发过程。
回到Codecademy完成JavaScript路线。做完6~8部分(数据结构做到Object 2)。
实现Codecademy上路线的5个基础小项目(Basic Projects)。做完之后,你已不再需要Codecademy了。这是一件好事,因为自己做的越多,学得就越快,就能更好准备开始独立编程。
阅读《JavaScript权威指南》第13,15,16和19章。或者阅读《JavaScript高级程序设计》第8,9,10,11,13和14章。这本书没有涉及到jQuery,而Codecademy上的jQuery知识也覆盖得不够。可以看看jQuery的官方教程,免费的:
你也可以在《JavaScript权威指南》第19章了解更多的jQuery知识。
完成全部的jQuery教程。
JavaScript终极编辑器:WebStorm
在你实现第一个项目之前,如果打算以后做JavaScript开发者或者经常用到JavaScript,最好现在就去下载的试用版。可以学习怎么使用WebStorm(专门为这个课程写的)。毋庸置疑,WebStorm是JavaScript编程最好的编辑器(或IDE)。30天试用后要付$49.00,但作为JavaScript开发者,这应该是除了买书以外最明智的投资了。
确保在WebStorm中启用JSHint。JSHint是一个检查JavaScript代码错误和潜在问题的工具,强制你的团队按照规范写代码。用WebStorm最爽的地方是JSHint会自动在错误的代码下显示红线,就像文字处理程序中的拼写检查。JSHint会显示一切的代码错误(包括HTML),促使你养成良好的习惯,成为更好的JavaScript程序员。这很重要,当你真正意识到WebStrom和JSHint对你的巨大帮助时,你会回来感谢我的。
此外,WebStorm是一个世界级,专业人员使用的IDE,用来编写专业的JavaScript web应用,所以你以后会经常用到它。它还结合了Node.js,Git和其它JavaScript框架,所以即使你成为了明星级的JavaScript开发者,你还是会用到它的。除非以后出现了更多的JavaScript IDE。
公平起见,我在这里提一下,这是仅次于WebStorm的JavaScript编辑器。它的功能不及WebStorm丰富和完整(即使添加了一堆插件)。做小修改的时候我会用到Sublime Text 2,它支持很多语言,包括JavaScript,但我不会用它来构建完整的JavaScript Web应用。
第一个项目-动态问答应用
此时,你已经掌握了足够的知识去建立一个稳固的,可维护的web应用。在做完我为你设计的这个应用之前不要看后面的章节。如果你卡住了,去Stack Overflow提问并且把书上相关的内容重新看一遍直到完全理解这些概念。
接下来开始建立一个JavaScript问答应用(还会用到HTML和CSS),功能如下:
这是一套单选测试题,完成之后会显示用户的成绩。
问答应用可以产生任意多的问题,每个问题可以有任意多的选项。
在最后的页面显示用户的成绩。这个页面只显示成绩,所以要把最后一个问题去掉。
用数组存所有的问题。每个问题包括它的选项和正确答案,都封装成一个对象。问题数组看起来应该是这样:
// 这里只演示一个问题,你要把所有问题都添加进去
var allQuestions = [
question: "Who is Prime Minister of the United Kingdom?",
choices: [
"David Cameron",
"Gordon Brown",
"Winston Churchill",
"Tony Blair"],
correctAnswer: 0
当用户点击“Next”时,使用document.getElementById或jQuery动态的添加下一个问题,并且移去当前问题。在这个版本里“Next”是唯一的导航按钮。
你可以在本文下方评论求助,最好是去Stack Overflow提问,在那里会有及时而准确的回答。
5~6周(正则表达式,Window对象,事件,jQuery)
阅读《JavaScript权威指南》第10,14,17,20章。
或者阅读《JavaScript高级程序设计》第20,23章。
记得要把样例代码敲到浏览器控制台上,尽可能蹂躏它,做各种测试,直到完全理解它是怎么工作,它能干些什么。
此时,你用起JavaScript来应该很顺手,有点像武林高手要出山了。但你还不能成为高手,你要把新学到的知识反复使用,不停的学习和提升。
升级之前做的问答应用
添加客户端数据验证:保证用户回答了当前问题才能进入下个问题。
添加“Back”按钮,允许用户返回修改答案。最多可以返回到第一个问题。注意对于用户回答过的问题,选择按钮要显示被选中。这样用户就无需重新回答已经答过的问题。
用jQuery添加动画(淡出当前问题,淡入下个问题)
在IE8和IE9下测试,修改bug,这里应该会有得你忙了。 ;D
把问题导出JSON文件
添加用户认证,允许用户登陆,把用户认证信息保存在本地存储(local storage,HTML5浏览器存储)。
使用cookies记住用户,当用户再次登陆时显示“欢迎用户名回来”。
7周,可延长到8周(类,继承,HTML5)
阅读《JavaScript权威指南》第9,18,21,22章。
或者阅读我的博文
或者阅读《JavaScript高级程序设计》第6,16,22,24章,第6章只读“创建对象”(Object Creation)和“继承”(Inheritance)部分。注意:这部分是本课程中技术性强度最大的阅读,要根据自身的状况考虑要不要全部读完。你至少要知道原型模式(Prototype Pattern),工厂模式(Factory Pattern)和原型继承(Prototypal Inheritance),其它的不作要求。
继续升级你的问答应用:
页面布局使用,把问答的元素弄得看起来专业一些。而作为额外奖励,用Twitter Bootstrap的(译者注:原文地址失效,已改)显示问题,每个标签显示一个问题。
学习,将Handlebars.js模板用在问答应用上。你的JavaScript代码中不应该再出现HTML代码了。我们的问答应用现在越来越高级啦。
记录参加问答的用户成绩,展示用户在问答应用中与其他用户的排名比较。
在学完Backbone.js和Node.js后,你会用这两种最新的JavaScript框架重构问答应用的代码,使之变成复杂的单页面现代web应用。你还要把用户的认证信息和成绩保存在MongoDB数据库上。
接下来:构思一个项目,趁热打铁迅速的去开发。卡住的时候参考《JavaScript权威指南》或者《JavaScript高级程序设计》。当然,还要成为Stack Overflow的活跃用户,多问问题,也要尽量回答其它人的提问。
Meteor.js入门(即将出炉)
三个最好的JavaScript前端框架(即将出炉)
一些鼓励的话
祝你学习顺利,永不放弃!当你做不下去觉得自己很蠢的时候(你会时不时这么想的),请记住,世界各地的其他初学者,甚至是有经验的程序员,也会不时产生这种想法的。
如果你是完全的初学者,特别是过了青少年时期的人,开始写代码的时候也许很困难。年轻人无所畏惧,也没有什么负担,他们可以花大量的时间在喜欢的东西上。所以各种挑战对他们来说也不过是短暂的障碍罢了。
但过了青少年期后你会希望快速的见到成效。因为你没有这么多的时间去花上几个小时就为了搞清楚一些细节的东西。但这些东西你必须深入去理解它,不要因此沮丧,坚持完成课程的任务,把bug都找出来,直到你完全理解。当你到达胜利的彼岸时,你会知道这一切都是值得的,你会发现编程非常有趣而且在上面花的时间都会得到可观的回报。
一个人必须去感受和领悟构建程序带来的强烈快感。当你一步步的掌握知识点,一点点的将程序搭建起来时,就会对自己产生激励与肯定,带来十分美妙的满足感。
总有一天你会意识到之前忍受的所有困难都是值得的。因为你将要成为一名光荣的程序员,你也清楚作为JavaScript开发者,你的前途一片光明。就像在你之前成千上万的程序员一样,你打败了最难的bug,你没有退步,你没有放手,你没有找任何借口让自己放弃。
当你学有所成的时候,放心的将你的成果分享给我们吧,哪怕是个微不足道的,小到显微镜都看不到的小项目。
原文:()
赞助商链接
喜欢这篇文章吗?欢迎分享到你的微博、QQ群,并关注我们的微博,谢谢支持。
版权:除非注明,本站文章均为原创文章,转载请联系我们授权,否则禁止转载。
艺术与审美入门之书
设计师必看
手机APP设计
新手推荐!
Web用户体验入门书籍
web前端&设计群}

我要回帖

更多关于 ui设计是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信