疾风式全栈教程(9)-语法大班(草稿预览)

有没有发现一个问题,我们之前一直是在浏览器里运行代码,原来说的高大上的node呢,自从装上之后一次都还没用过呢.

哈哈 那我们就开始用一用.其实他们都是运行js的环境,js的标准语法是一致的,只是在于环境中提供的内容不太一样.

还是用我们之前写的js文件,这次不再放到script标签里了,而是打开cmd,用node运行.

所以node就是一个运行js文件的地方.

但是js文件多了,就会有一个如何管理的问题.以前我们在页面上引入script,一个页面引入几十个js文件,就不得了了,但是node这,可能要管理成千上万个js文件,都像script一样找路径,引入,运行,工作量就太大了.

所以就有了包和模块的机制.

什么是模块呢,就是把一大块东西分成一小块一小块的.和切菜 吃饭是一个道理.大块的不好处理,我们会用刀或者用牙分成小块,再吃下去.

我们这里的模块,简单的说就是js文件.

但是,由于node出现的晚,之前js一直是基本只在网页上通过script标签来用,也没有什么模块化的机制.node算是开了个头,但是却没有成为统一的标准,es6出现的更晚,虽然理论上是官方标准,实际情况却是还在和之前其他的习惯用法混合并用中.这也就是js现在所处的环境,感觉比较混乱.希望将来能慢慢规范和统一吧.

node之前使用的模块化机制是,用require导入模块,用module.export导出模块.而es6标准的模块化机制是用import导入,用export导出.具体写法大家可以搜索网上的文章和代码.重要的是,我们要明白,在一个js文件里定义的内容,如果没有声明导出的话,在其他文件里是无法使用的.即使导出了,其他文件要想使用,也必须先声明导入.

其实也没有什么,想用的话,先声明两下而已.不过这里其实代表了计算机世界里很多类似这种方式的机制,也就是被称为作用域的概念.比如,之前我们说的,要使用一个新名字,必须要先声明赋值,然后才能使用.其实通过先后顺序,也定义了一个范围.还有一个规定叫块级作用域,也就是大括号限定的的范围,大括号里定义的名称,大括号外是不能访问的.函数一般也有大括号,也划定了一个作用域.

之前的js还有一个坑就是var不受块级作用域限制,不过我们很少用到var.都用const或let就可以了.


现在可以按照模块的方式来管理js文件了.可是似乎还没有解决大量js文件管理困难的问题.所以我们需要能够帮我们管理这些文件的工具:npm.

装完node,就同时装上了npm,npm就是node模块的管理器.npm管理的模块称为包.包有名称,也有一定的格式.直观的看,npm包就是一个文件夹下符合一定规则的一些文件.

我们可以新建一个文件夹,在cmd里cd到这个文件夹的路径下,执行npm init,点几下回车,就会创建一个npm格式的空包.主要是一个描述信息的package.json文件.而这个文件里最有用的就是他可以帮助我们管理依赖包.就是说,尽管是我们自己写的一个包,但是我们不是什么都自己写,有一些功能别人已经做好了,发布成了npm包,我们就可以作为依赖包添加进来,在我们的package.json文件中声明.主要是写上包的名字和版本.以后npm就可以自动帮我们下载和管理这些包了.省去了我们自己搜索下载的麻烦.

以后我们会经常用到npm的,常用的命令就几条,到时候用到我们再说.用几次就熟悉了.

node环境中的API和浏览器环境中的还是不太一样的.有一些网络,文件之类的操作.不过我们更多时候也是使用更上层的框架来进行开发,对于这些低层的函数,如果有机会要用到,再查文档了解吧.

java里和npm对应的包管理器叫maven.作用差不多,但是maven使用的是xml格式的配置文件.xml的格式像html,使用尖括号括起来的标签,一层一层的嵌套内容的.

java的模块也比js里的概念要多,不仅有更多类型,而且有更多可见性控制.

但是java还有一大堆的名词和理论要学呢.尤其是面向对象的那一大套理论.我们尽可能简单的说吧.


很多地方都使用变量这个概念,但是我们不想使用会变的量,所以我们使用 名称,这个概念.或者统一称为值.

可能叫引用也可以,但是引用已经在计算机里表示了另外一个更为狭窄的概念.

名字 的话,应该是指的古人的名和字,如名关羽,字云长,用在计算机里感觉太不专业,

对象也是一个名称,但是里面可以装其他的名称,所以他是一个容器类型,或者叫引用类型.我觉得统一叫高阶类型,也挺好.

这样我们就有,基本类型,数值,字符串(文本值),boolean值.以及被设置为这些值的名称.

其余的都属于高阶类型,也就是可以存放或指向这些值.当然,多数情况下都会放多个.

而函数也是高阶类型.

比如,我们的

const x = 1

const duixiang = {x : x}

duixiang.x

const hanshu = x => x

hanshu(x)

都可以得到我们放进去的那个值.当然,一个是通过存储得到的,一个是通过运算得到的.这也就意味着,运算和存储之间存在着某种深刻的联系.这种联系不光是在理论上有用,我们在算法理论里也会看到,运算所带来的时间复杂性,和存储带来的空间复杂性,是可以相互转化的.也就是空间换时间,或时间换空间.并且,早期的计算机主要是用于计算,甚至没有永久存储,随着时间,存储变得越来越重要.各种异步,缓存,都是在减少计算,多使用存储.

所以,尽管函数式编程比面向对象出现的更早,但是后来却是面向对象的存储方式流行起来,最近函数式编程开始有复兴迹象,其实里面的多数高阶函数,提供的容器的功能,是使用函数的形式解决存储的问题.但是面向对象轻视函数,使用底层的机器控制流,让简单的运算变得复杂,也是一个大的弊病.运算和存储的选择更多是要根据实际的业务场景.我们只是希望让自己多一些方便实用的工具,在面临具体问题时可以灵活作合适的选择,避免被某种技术的局限带入削足适履的困境.


而赋值和往对象里装对象里装东西的说法,我们统一称为增加(添加)或设置.或者可以简称增设,有则设置,无则增加.这也是现在一种常见的处理方式.

构造函数就是往对象里装名称的函数,其实应该说是对象初始化时会调用的函数.就像vue中的created,也叫生命周期钩子,没有合适的好听的叫法.

而继承,就是一连串的构造函数,挨个往里装名称,从最上面的objet构造函数开始,按照继承链一层一层的执行下来,最后就装好一个包含了所有祖先的对象.


因为在java里凡事都很强调类型,不仅仅是知道这是一个对象,还要知道是什么类型的对象.所以java里引进了类的概念.创建一个对象,就是new 一个类的构造函数. 类还可以继承.就是猫类继承动物类.继承只能是单线条的,不够用了就又整出来一个接口,类可以实现多个接口.为了更好的约束类型的范围,还整出来一个泛型.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,692评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,482评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,995评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,223评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,245评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,208评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,091评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,929评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,346评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,570评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,739评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,437评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,037评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,677评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,833评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,760评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,647评论 2 354

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,613评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,072评论 2 58
  • 前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同...
    筑梦师Winston阅读 25,992评论 80 514
  • 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & MondayC...
    紫月凌枫阅读 2,360评论 5 26
  • 亲子日记第5天,共计185天。下班回家大宝在看书,我赶紧给小宝喂上饭。吃完饭大宝写作业,她奶奶这几天胳膊疼,...
    馨宝贝之快乐每一天阅读 75评论 0 0