※ 引述《ponyufang (yufang)》之铭言:
: 我是从设计转前端工程师,原本只会切版。
: 最近转职后遇到的瓶颈,不是在写程式本身,而是对很多程式以外的东西不了解。
: 比如说node.js、git等等,刚进公司是同事帮忙架环境,我只能看着他操作,却不懂意思
: 。
: 爬了一些文章,才好不容易知道要怎么使用终端机,还有学会git 指令,但觉得自己还是
: 一知半解,好像没有真的了解原理。
: 我回到家想用自己的电脑操作看看,但是一直不成功。
: 想装node.js,查了文章之后又看到homebrew、npm等等的,照着步骤做又会有问题,觉得
: 主要还是不懂这些东西在干嘛。
: 不知道是不是自己对很多电脑的基本概念不懂,我自己本身周遭没有相关背景的朋友可以
: 询问,公司的同事都是资管、资工背景出身,有时候询问他们问题,都无法得到明确的答
: 案,他们无法理解我为什么不懂这些,所以都只会回答就是这样、就是那样。
: 我觉得很困惑,不知道有没有朋友跟我有过一样的经历,可以给我一点指引。
: 是不是要从哪里着手去把基础的东西学起来?
: 可能这样问会被骂,但希望有人可以给一点意见。
当初 javascript 这个程式语言开发出来是为了可以在浏览器下完成一些工作
node.js 就是让你可以在浏览器之外还可以执行 javascript 程式码的一种环境
npm 则是 node.js 内建的一个工具软件
你应该有软件常常在更新的概念,前阵子你安装一个软件来用,过了一个月这软件出了
新版的,结果你更新成新版之后使用上出了很多问题,你就想说那不如移除之后装旧版
的来用,于是你就到作业系统提供的管理已安装软件的接口移除该软件,再去下载旧版
的来安装
以上就是手工的作法,而 npm 则是让你可以透过下指令让电脑帮你完成同样的事情,
更好的是你可以编辑 package.json 档案来让 npm 完成更多其他的工作,不过 npm
管理的软件只限于能在 node.js 环境下执行的软件
homebrew 也是类似的功能,不过专门用来管理执行于 Mac 中的软件
而 git 则是版本控制软件
以前若你想备份一个档案是怎么做的? 复制起来存到某个资料夹,对吧?
若这个档案会随着时间被人编辑而一直增加内容,而你又想保存旧版本的内容,好让
你可以在某个时间点能够再从这个旧版本重新开始,是不是开始每次存盘时就另存新档
,并对档名加上一些可以辨识版本的资讯?
上面描述的就是很手工的版本控制方式,而各种版本控制软件就是为了同样的目的,
但却可以透过下指令让电脑来帮你完成同样的工作,效果还更好
在你还不熟并试着安装这些工具来使用时,记得把你做过的事情,遇到的错误讯息,
一步一步记录下来,当你卡住时,这些记录下来的资讯可以帮助别人快速判断问题出在
哪里,而且日后你若忘记了也能重新照着这些步骤来做
在你开始写程式之后,会发现常常要安装一堆工具软件,这些都是为了帮助程式设计师
可以更快速、更正确地开发软件
例如未来你可能会需要写测试,所以需要安装一些测试框架,像 jest 或 jasmine
可能会需要流程自动化,所以需要安装 gulp 或 grunt 或其他的软件
可能会需要统一程式码风格,所以需要安装 eslint 之类的软件
可能会需要更进一步的整合所有流程,所以需要安装 jenkins 之类的软件
会不断重复做的事情,就交给电脑帮我们做,这就是安装这些工具软件想达成的目的