Git
和 linux
是一個做者github.com
coding.net
git add . // 添加 新增或者修改的文件
git commit -m "xxx" // 把修改的東西先提交到本地區域, "xxx" 修改的提示
git checkout xxx // 用於切換分支或恢復工做樹文件。
git push // 推送到服務器
git pull // 從服務器拉下來代碼
git branch // 分支
git checkout -b xxx // 新建一個分支
git checkout xx // 切換分支
git merge xxx // 用於從指定的commit(s)合併到當前分支的操做。
複製代碼
git branch // 查看分支 master
git checkout -b dev // 建立分支 dev,並切換到dev 分支
git branch // 查看分支 master dev
git checkout master 切換到,aster
git merge dev // 合併分支
複製代碼
不使用模塊化的狀況php
utils.js getFormatDate函數
底層工具a-util.js aGetFormatDate函數 使用getFormatDate
a.js aGetFormatDate
業務代碼,層級引用關係// utils.js
function getFormatDate(date, type) {
// type = 1, 返回 2019-01-12 格式
// type = 2, 返回 2019年1月12日 格式
// ...
}
// a-util.js
function aGetFormatDate(date) {
// 要求返回 2019年1月12日 格式
return getFormatDate(date, 2)
}
// a.js
var dt = new Date()
console.log(aGetFormatDate(dt))
複製代碼
使用模塊化css
<script src="a.js"></script> 其餘根據依賴自動引用
僞代碼
// utils.js
export { // 暴露出去
getFormatDate: function (date, type) {
// type = 1, 返回 2019-01-12 格式
// type = 2, 返回 2019年1月12日 格式
// ...
}
}
// a-util.js
var getFormatDate = require('util.js') // 引用
export { // 暴露出去
aGetFormatDate: function (date) {
// 要求返回 2019年1月12日 格式
return getFormatDate(date, 2)
}
}
// a.js
var aGetFormatDate = require('a-util.js')
var dt = new Date()
console.log(aGetFormatDate(dt))
複製代碼
AMD
require.js
define
函數require
函數Js
會自動 異步加載require.js
// util.js
define(function() {
return {
getFormatDate: function (date, type) {
if (type === 1) {
return '2019-02-14'
} else if (type === 2) {
return '2019年2月14日'
}
}
}
})
// a-util.js
define(['./util.js'], function (util) {
return {
aGetFormatDate: function (date) {
return util.getFormatDate(date, 2)
}
}
})
// a.js
define(['./a-util.js'], function (aUtil) {
return {
printDate: function (date) {
console.log(aUtil.aGetFormatDate(date))
}
}
})
// main.js
require(['./a.js'], function (a) {
var dt = new Date()
a.printDate(dt)
})
複製代碼
nodejs
模塊化規範, 如今被大量用前端, 緣由:html
npm
中獲取npm
成本很是低CommonJS
不會異步加載JS, 而是同步一次性加載出來使用 CommonJs
前端
// util.js
module.exports = {
getFormatDate: function (date, type) {
if (type === 1) {
return '2019-02-14'
} else if (type === 2) {
return '2019年2月14日'
}
}
}
// a-util.js
var util = require('util.js') // 獲取
module.exports = { // 推出
aGetFormatDate: function (date) {
return util.getFormatDate(date, 2)
}
}
// a.js
var aUtil = require('a-util.js')
module.exports = {
printDate: function (date) {
console.log(aUtil.aGetFormatDate(date))
}
}
複製代碼
JS
, 使用 AMD
npm
以後建議使用 CommonJS
上線和回滾的基本流程node
linux基本命令linux
// 登陸
ssh name@serve
mkdir test // 建立文件夾
ls // 查看裏面的文件
cd xxx // 到那個目錄
pwd // 查看當前路徑
cd .. // 返回升一級目錄
rm -rf test // 刪除文件夾 test
cp a.js a1.js // 拷貝文件
mv a1.js src/a1.js // 移動
rm a.js // 刪除文件
vim b.js // 打開 vim, 並建立
cat a.js // 查看文件內容
head a.js // 查看文件前面的內容
tail a.js // 查看尾部的一點內容
head -n 1 a.js // 只看第一行的內容
tail -n 2 a.js // 後兩行的內容
grep '2' a.js // 搜索
複製代碼
題目git
url
到獲得 html
的詳細過程window.onload
和 DOMContentLoaded
的區別
DOM
渲染完便可執行, 此時圖片, 視頻還沒加載完知識點 :github
加載資源的形式web
url
(或跳轉頁面) 加載 html
http://baidu.com
<scrript src="./a.js"></script>
加載一個資源的過程npm
DNS
服務器獲得域名的 IP
地址IP
的機器發送 http
請求http
請求瀏覽器渲染頁面的過程
HTML
結構生成 DOM Tree
css
生成 CSSOM
DOM
和 CSSOM
整合造成 RenderTree
RenderTree
開始渲染和展現<script>
時, 會執行並阻塞渲染CDN
讓資源加載更快經過連接名稱控制緩存
<script src="abc_1.js"></script>
只有內容改變的時候,連接名稱纔會改變
<script src="abc_2.js"></script>
複製代碼
bootcdn https://www.bootcdn.cn/
複製代碼
使用 SSR 後端渲染
緩存 DOM 查詢
// 未緩存
var i
for (i=0; i < document.getElementsByTagName('p').length; i++) {
// todo
}
// 緩存了 DOM 查詢
var pList = document.getElementsByTagName('p')
var i
for (i = 0; i < pList.length; i++) {
// todo
}
複製代碼
var a = document.getElementById('list')
// 要插入 10個li標籤
var frag = document.createDocumentFragment() // dom片斷
var x, li
for () {
// ...
}
a.appendChild(frag)
複製代碼
XSS 跨站請求攻擊
<script>
預防 XSS
< 爲 < > 爲 >
XSRF 跨站請求僞造
xxx.com/pay?id=100
可是沒有任何驗證<img src="xxx.com/pay?id=100">
預防 XSRF