主要針對實習期間,接觸的部分問題進行總結,后續會不間斷的補充,作為實習期間的回顧。
1,git ,github和gitlab的關系
git 是一個版本控制工具,github是一個用git做版本控制的項目托管平台,他是一個網站,提供給用戶空間創建git倉庫,保存用戶的一些數據文檔或代碼等。gitlab是基於git的項目管理軟件,gitlab是一個用於倉庫管理系統的開源項目,使用git作為代碼管理工具,並在此基礎上搭建起來的web服務。三者都是基於git的,可以說是git的衍生品。
2,關於SSH密鑰
ssh是一種安全的傳輸模式,github要求推送代碼的用戶是合法的,所以每次推送時候都要輸入賬號密碼,用以驗證你是否為合法用戶,為了省去每次都要輸入密碼的步驟,所以采用ssh保證安全傳輸。
3,為什么駝峰命名法定義組件名 ( 例如:MyComponentName)時,引用形式卻是短橫線分隔命名,他們的區別?
因為vue.js組件中的Prop中特性名大小寫不敏感,所以瀏覽器會把所有大寫字符解釋為小寫字符。而在DOM 中對大小寫是敏感的,這意味着當你使用 DOM 中的模板時,camelCase (駝峰命名法) 的 prop 名需要使用其等價的 kebab-case (短橫線分隔命名) 命名。
4,if 語句后面的分號,為什么要加分號,為什么不加分號?
if的語法是這樣的:if ( ) 后面必須跟着一條語句,作為if的執行語句。執行語句后面自然會有分號,這分號同時作為 if 語句的結束標志。但是也可以讓 if 執行多條語句,這就需要將多條語句用 { } 括起來,形成語句塊,語句塊會被視為“一條語句”,所以如果 if 后面有用大括號括起來的語句塊的話,就不用再加上結尾的分號了,結尾大括號就標志了 if 語句的結束。當if(); 后面的語句是空語句時,就需要加分號;若是if() s=b;這種形式 分號就在s=b后面了。
5,vue組件中定義的屬性放data和computed里的區別是什么?
data
對象的屬性值發生改變時,視圖將會產生“響應”,即匹配更新為新的值。當這些數據改變時,視圖會進行重渲染。值得注意的是只有當實例被創建時,在 data
中存在的屬性才是響應式的。
事件驅動編程底層依賴於事件循環(event loop),事件循環基本上是事件檢測和事件處理器觸發這兩種函數不斷循環調用的一個結構。在每次循環里,事件循環機制需要檢測發生了哪些事件,當事件發生時,它找到對應的回調函數並調用它。(https://www.jb51.net/article/53812.htm)
事件循環只是運行在進程內的一個線程,當事件發生時,事件處理器可以單獨運行並且不會被中斷,也就是說:
1.在某個特定時刻最多有一個事件回調函數運行
2.任何事件處理器運行時都不會被中斷
事件循環:1,node平台將一個事件任務連同該任務的回調函數放到一個事件循環系統中;2,事件循環系統高效的管理系統線程池同時高效執行每一個任務(耗時間的任務,即阻塞操作);3,當然任務執行完成過后自動執行回調函數。
總結:node中將所有的阻塞操作都交給了內部實現的線程池,node本身主線程主要就是不斷的往返調度。
(也可參考相關鏈接,講的挺好:https://zhuanlan.zhihu.com/p/33058983 http://www.ruanyifeng.com/blog/2014/10/event-loop.html)
7,閉包
閉包可以理解為一個特殊的函數,但是它可以繼承並訪問它自身被定義的那個作用域里的變量。當你將一個回調函數作為參數傳遞給另外一個函數時,它稍候會被調用,神奇的是,這個回調函數被稍候調用時,它居然記住了它自身定義所在的那個上下文以及父上下文里的變量,而且還可以正常訪問它們。