ToCode
Kanalga Telegram鈥檇a o鈥榯ish
讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽
Ko'proq ko'rsatish1 418
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
1 418
# 讛讗诐 注讚讬讬谉 讛讬讬转诐 诪讜讻谞讬诐 诇讙讬讬住 讗转 讚讗讙诇住 拽专讜拽驻讜专讚 诇注讘讜讚讛?
讘 2008 讚讗讙诇住 拽专讜拽驻讜专讚 驻讬专住诐 讗转 讛住驻专 JavaScript: The Good Parts 砖讟讬诇讟诇 讗转 注讜诇诐 驻讬转讜讞 讛 Web. 讘讗讜转讜 住驻专 拽专讜拽驻讜专讚 讛爪讬注 转讘谞讬讜转 诇注讘讜讚讛 注诐 JavaScript 讻讚讬 诇讘谞讜转 讘转讜讱 砖驻转 JavaScript 讗转 讛诪讘谞讬诐 砖诪转讻谞转讬 Java 讛讬讜 专讙讬诇讬诐 诇诪爪讜讗 讘转讜讻谞讬讜转 砖诇讛诐, 诪讘谞讬诐 讻诪讜 诪讞诇拽讛, 讬专讜砖讛 讜诪砖转谞讬诐 驻专讟讬讬诐.
讛讛爪注讜转 砖诇 拽专讜拽驻讜专讚 讛讻专讬讞讜 诪转讻谞转讬 讜讜讘 砖专爪讜 诇讛转拽讚诐 讜诇讘谞讜转 讬讬砖讜诪讬诐 诪讜讚专谞讬讬诐 诇讛讻讬专 讗转 讛拽专讘讬讬诐 砖诇 JavaScript 讜诇讛讘讬谉 讟讜讘 诪讛 讛讛讘讚诇 讘讬谉 Prototypical Inheritance 诇讘讬谉 诪谞讙谞讜谉 讛诪讞诇拽讜转 砖讛讬讬谞讜 专讙讬诇讬诐 诇诪爪讜讗 讘 Java, 讜讗讬讱 诇讘谞讜转 讗讞讚 诪转讜讱 讛砖谞讬.
拽讟注 讛拽讜讚 讛讝讛 讛讜讗 讚讜讙诪讗 诪转讜讱 讛住驻专 砖诪砖拽祝 讗转 讛住讙谞讜谉 砖诇 拽专讜拽驻讜专讚 讜砖诇 讛拽讜讚 砖讛讬讛 诪拽讜讘诇 讘讗讜转讛 转拽讜驻讛:
var Mammal = function (name) {
this.name = name;
};
Mammal.prototype.get_name = function ( ) {
return this.name;
};
Mammal.prototype.says = function ( ) {
return this.saying || '';
};
诪转讻谞转讬诐 砖讻转讘讜 拽讜讚 讻讝讛 讛讬讜 爪专讬讻讬诐 诇讛讘讬谉 讟讜讘 诪转讬 诇讛讙讚讬专 驻讜谞拽爪讬讜转 注诇 讗讜讘讬拽讟讬诐, 诪转讬 诇讛砖转诪砖 讘 Prototype, 讗讬讱 诇讘谞讜转 讛讬专专讻讬讜转 讬专讜砖讛 讜讗驻讬诇讜 讗讬讱 诇讘谞讜转 诇讘讚 驻讜谞拽爪讬讜转 讻诪讜 bind 讗讜 Object.create. 讛诪讬诇讛 prototype 讛讜驻讬注讛 讘讻诇 爪注讚 砖诇 讛驻讬转讜讞.
讛讬讜诐 专讜讘 讛驻专讜讬拽讟讬诐 诪砖转诪砖讬诐 讘驻专讬讬诪讜讜专拽, 砖诇讜砖转 讛驻专讬讬诪讜讜专拽住 讛诪专讻讝讬讜转 (Vue, Angular 讜 React) 讘谞讜讬讜转 住讘讬讘 讛专注讬讜谉 砖诇 拽讜诪驻讜谞谞讟讜转 讜讻诇 讗讞转 讻讘专 讬爪专讛 讘砖讘讬诇 讛诪转讻谞转讬诐 讗转 讻诇 讛诪注讟驻转 讻讚讬 诇讘谞讜转 拽讜诪驻讜谞谞讟讛 讘砖驻讛 讛诪讬讜讞讚转 砖诇讛.
拽讜讚 Angular 砖诪转讻谞转 讜讜讘 讬讻转讜讘 讛讬讜诐 讬讛讬讛 讻转讜讘 讘住讙谞讜谉 讛讝讛:
import { Component } from "@angular/core";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
title = "CodeSandbox";
}
砖讘讻诇诇 讻转讜讘 讘 TypeScript.
讘 Vue 拽讜讚 讟讬驻讜住讬 诪砖转诪砖 讘讗讜讘讬拽讟 驻砖讜讟:
import { reactive, computed } from 'vue';
export default {
setup() {
const state = reactive({
count: 0,
double: computed(() => state.count * 2)
});
function increment() {
state.count++;
}
return { state, increment };
}
};
讜讘专讬讗拽讟 讛讘住讬住 诇专讜讘 讛拽讜诪驻讜谞谞讟讜转 讛讜讗 讛驻讜谞拽爪讬讛:
export default function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
讗驻拽讟 诪讜讝专 砖诇 讛注讘讜讚讛 讘转讜讱 驻专讬讬诪讜讜专拽住 讛讜讗 砖讗谞讞谞讜 讻讘专 诇讗 注讜讘讚讬诐 诪讜诇 讛砖驻讛 (JavaScript), 讜诇讻谉 讬讻讜诇讬诐 诇讚诇讙 注诇 讗讬讱 砖讛砖驻讛 注讜讘讚转. 讛讬讜诐 讬讛讬讛 诪讜讝专 诇讘拽砖 诪诪讜注诪讚转 讘专讗讬讜谉 注讘讜讚讛 诇讘谞讜转 讛讬专专讻讬讬转 讬专讜砖讛 诪讘讜住住转 Prototypes, 驻砖讜讟 讻讬 讘专讜讘 注讘讜讚讜转 讛驻专讜谞讟 讗谞讚 讻讘专 诇讗 爪专讬讱 诇讻转讜讘 讛讬专专讻讬讬转 讬专讜砖讛 讻讝讗转. 讛诪注讘专 诇驻讜谞拽爪讬讜转 讞抓 讛驻讱 讗转 bind 诇诪讬讜转专转, 讜讛注讬专讘讜讘 讘讬谉 拽讜讚 JavaScript 诇 HTML 诪讝讻讬专 讗转 讛注专讘讜讘 砖讛讬讛 驻注诐 讘讬谉 拽讜讚 PHP 诇 HTML.
讘诪讜讘谉 诪住讜讬诐 讛注讜诇诐 诪转讞讬诇 诇讞讝讜专 诇讬诪讬诐 讛砖诪讞讬诐 砖诇 讛 jQuery Plugins, 讛讬诪讬诐 砖诇驻谞讬 JavaScript: The Good Parts. 讻诪讜 讗讝, 讙诐 讛讬讜诐 讘砖讘讬诇 诇讻转讜讘 拽讜诪驻讜谞谞讟讛 讞讚砖讛 讘讚专讱 讻诇诇 诪住驻讬拽 诇拽讞转 拽讜诪驻讜谞谞讟讛 拽讬讬诪转 讜诇砖谞讜转 讗讜转讛 拽爪转. 讻诪讜 讗讝, 讙诐 讛讬讜诐 讛专讘讛 驻注诪讬诐 讗谞砖讬诐 诪注讚讬驻讬诐 诇讞驻砖 拽讜诪驻讜谞谞讟讜转 拽讬讬诪讜转 讘讗讬谞讟专谞讟 注诇 驻谞讬 诇讘谞讜转 诇讘讚. 讜讻诪讜 讗讝, 讙诐 讛讬讜诐 讛专讘讛 诪讛拽讜讚 砖谞讻转讘 诪转注诇诐 诪讛驻诇讟驻讜专诪讛 注诇讬讛 讛讜讗 讗诪讜专 诇专讜抓.
讘转讜讱 讗拽讜住讬住讟诐 讻讝讛 诪注谞讬讬谉 诇住讬讬诐 讘砖讗诇讛 诪讛讻讜转专转 - 讛讗诐 诇讚注转讻诐 讛讬讻专讜转 讟讜讘讛 注诐 讛砖驻讛 讛讬讗 注讚讬讬谉 诪讬讜诪谞讜转 讞砖讜讘讛 诇诪驻转讞讬 驻专讜谞讟? 讗讜 砖讬讜转专 讞砖讜讘 诇讛砖拽讬注 讘讞讜砖 注讬爪讜讘 讙专驻讬 讜讘诪讬讜诪谞讜转 讞讬驻讜砖 拽讜诪驻讜谞谞讟讜转 讟讜讘讜转 讘专砖转?1 418
# 爪注讚讬诐 拽讟谞讬诐 讝讛 谞讞诪讚 - 讗讘诇 诪讛 讛爪注讚讬诐?
讛注爪讛 讛拽诇讗住讬转 砖诇 诇讬诪讜讚讬诐 讗讜诪专转 砖讻讚讗讬 诇讛转拽讚诐 讘爪注讚讬诐 拽讟谞讬诐: 诇讚讜讙诪讗 拽讜讚诐 转诇诪讚讬 诇谞住讜注 注诇 讗讜驻谞讬 讚讞讬驻讛, 讗讞专讬 讝讛 转注讘专讬 诇讙诇讙诇讬 注讝专 讜讘住讜祝 讗讜驻谞讬讬诐 专讙讬诇讬诐.
讜讝讛 讬驻讛 讘转讬讗讜专讬讛 讗讘诇 讛砖讟谉 讛讜讗 讘驻专讟讬诐: 讗讬讝讛 爪注讚讬诐 爪专讬讱 诇拽讞转 讘砖讘讬诇 诇诇诪讜讚 讗转 讛讚讘专 讛讝讛 砖讗谞讬 专讜爪讛 诇诇诪讜讚? (讘讚讜讙诪转 讛讗讜驻谞讬讬诐, 讗讜诇讬 讙诇讙诇讬 讛注讝专 讘讗诪爪注 专拽 诪讗讟讬诐 讗转 讛诇讬诪讜讚).
讘讗讞讚 讛拽讜专住讬诐 讛驻讞讜转 讟讜讘讬诐 砖诇讬诪讚转讬 拽讛诇 讛讬注讚 讛讬讛 讗谞砖讬诐 诇诇讗 专拽注 讘转讻谞讜转 讜讛住讬诇讘讜住 讛转讞讬诇 注诐 注讜诇诐 讛 Web, 讘谞讬讬转 讗转专讬诐 讜 JavaScript. 讘住讬讜诐 讛拽讜专住 讛讬转讛 诇谞讜 拽讘讜爪讛 砖诇 讗谞砖讬诐 砖讬讜讚注讬诐 诇讻转讜讘 讬讬砖讜诪讬 专讬讗拽讟 讗讘诇 诇讗 诪讘讬谞讬诐 讗转 讛讛讘讚诇 讘讬谉 讞讬驻讜砖 讗讬讘专 讘诪注专讱 诇讞讬驻讜砖 诪驻转讞 讘讗讜讘讬拽讟. 讛讚讬诇讜讙 注诇 谞讜砖讗讬 诪讘讜讗 诇转讻谞讜转 讜讗诇讙讜专讬转诪讬拽讛 讘住讬住讬转 讬爪专 驻注专讬诐 砖讗讞专讬 讝讛 讗讬 讗驻砖专 讛讬讛 诇转拽谉.
讗讜 转讜驻注讛 诪讜讻专转 讗讞专转 讛讬讗 讛拽讜砖讬 砖诇 驻专讬诇讗谞住专讬诐 讘转讞讜诐 讛驻讬转讜讞 诇讛砖转诇讘 讘讞讘专讜转 讙讚讜诇讜转. 讗讜 讻诪讜 砖爪讬讬抓 诪拽住 讛讗讜讜诇 讘爪讬讜抓 砖讛驻讱 诇讛讬住讟讜专讬讛 讗讞专讬 砖诇讗 拽讬讘诇讜 讗讜转讜 诇注讘讜讚讛 讘讙讜讙诇:
> Google: 90% of our engineers use the software you wrote (Homebrew), but you can鈥檛 invert a binary tree on a whiteboard so fuck off.
讜讝讛 谞讻讜谉, 讻讬 驻专讬诇讗谞住专讬诐 注讜讘讚讬诐 讘住讜诇诐 讗讞专 诇讙诪专讬 诪讝讛 砖诇 诪转讻谞转讬诐 讘讞讘专讜转 讙讚讜诇讜转 讜讘诪注专讻转 讗讬诇讜爪讬诐 讗讞专转 诇讙诪专讬. 讘讞讬专转 讛爪注讚讬诐 讜讛住讜诇诐 砖讬转讗讬诪讜 诇诪拽讜诐 讗诇讬讜 讗转诐 专讜爪讬诐 诇讛讙讬注 讛讬讗 讛讞诇拽 讛讻讬 讞砖讜讘 讘转讛诇讬讱 讛诇讬诪讜讚, 讜诇爪注专讬 讝讛 讛讞诇拽 砖讛专讘讛 讗谞砖讬诐 诪讚诇讙讬诐 注诇讬讜 讗讜 诪砖讗讬专讬诐 讗讜转讜 诇讬讚 讛诪拽专讛.
讛讞诇拽 讛讻讬 拽砖讛 讘讘谞讬讬转 拽讜专住 讛讜讗 诇讗 讛讛住讘专 注爪诪讜, 讗诇讗 讛讘讞讬专讛 诪讛 诇诇诪讚 讜讘讗讬讝讛 住讚专.
1 418
# 爪'拽诇讬住讟 诇讘讚讬拽转 驻专讜讬拽讟 专讬讬诇住
诇讗讞专讜谞讛 讗谞讬 诪住转讜讘讘 讛专讘讛 讘讗驻讜讜专拽 讻讚讬 诇诪爪讜讗 驻专讬诇讗谞住专/讬转 诇驻专讜讬拽讟 专讬讬诇住 讜讻讻讛 讬讜爪讗 诇讞讟讟 讘讛专讘讛 诪讗讙专讬 讙讬讟讛讗讘 砖诇 讗谞砖讬诐. 讘砖讘讬诇 诇讗 诇讛转讞讬诇 讻诇 驻注诐 诇讞砖讜讘 诪讞讚砖 诪讛 爪专讬讱 诇讛讬讜转 讘驻专讜讬拽讟 讛讻谞转讬 爪'拽诇讬住讟 拽讟谉 砖诇 讚讘专讬诐 砖讗谞讬 诪讞驻砖 诇驻讬 住讚专讬 注讚讬驻讜讬讜转. 诪讜讝诪谞讬诐 诇拽专讜讗 诇住驻专 诪讛 讚注转讻诐 讜讙诐 诇讛爪讬注 住注讬驻讬诐 砖驻住驻住转讬.
## 讗讘讟讞转 诪讬讚注
讛专讙诇讬 讗讘讟讞转 诪讬讚注 讝讛 诪砖讛讜 砖拽砖讛 诪讗讜讚 诇诇诪讜讚 讜注诇 讟注讜讬讜转 讗讘讟讞转 诪讬讚注 拽砖讛 诪讗讜讚 诇注诇讜转 讘 Code Review 砖讜讟祝. 讛讘注讬讛 砖驻砖讜讟 讗谞砖讬诐 讻讜转讘讬诐 讬讜转专 诪讚讬 拽讜讚 讜讘谞讜砖讗 讗讘讟讞转 诪讬讚注 讻诇 驻住讬拽 诇讗 讘诪拽讜诐 讬讻讜诇 诇讛讬讜转 拽讟诇谞讬, 讜诇讻谉 讗谞讬 诪注讚讬祝 诇住谞谉 诪专讗砖 诪转讻谞转讬诐 砖诇讗 诪讜讚注讬诐 诇谞讜砖讗 讗讜 砖讗讬谉 诇讛诐 讗转 讛讗讬谞住讟讬谞拽讟 砖诇 拽讜讚 诪讗讜讘讟讞. 讝讛 诇讗 讗讜诪专 砖讗谞讞谞讜 谞转驻讜住 100% 诪讛讘注讬讜转 - 转诪讬讚 讬讛讬讜 讘注讬讜转. 讗讘诇 讻谉 讞砖讜讘 砖谞拽讜讚转 讛讛转讞诇讛 转讛讬讛 砖诇 讻转讬讘讛 诪讗讜讘讟讞转.
讘驻讜注诇 讘驻专讜讬拽讟 专讬讬诇住 讝讛 诪转专讙诐 诇:
1. 诇砖讬诐 诇讘 诇谞拽讜转 讻诇 驻专诪讟专 砖诪讙讬注 诪讛 Client.
2. 诇讜讜讚讗 讘拽专转 讙讬砖讛 谞讻讜谞讛 诇讻诇 谞转讬讘.
3. 诇讜讜讚讗 谞讬拽讜讬 讬住讜讚讬 砖诇 拽诇讟 诇驻谞讬 驻拽讜讚讜转 驻讙讬注讜转 讘诪讬讜讞讚 (讻诪讜 system 讗讜 eval).
4. 诇讜讜讚讗 砖讻诇 讛诪讞专讜讝讜转 砖谞讻谞住讜转 诇 HTML 注讘专讜 谞讬拽讜讬.
讗诐 讛驻专讜讬拽讟 谞专讗讛 专爪讬谞讬 讗驻注讬诇 注诇讬讜 讙诐 讗转 brakeman 讻讚讬 诇专讗讜转 砖诇讗 驻住驻住转讬 讻诇讜诐, 讗讘诇 讘讚专讱 讻诇诇 讗转 讛讚讘专讬诐 讛讙讚讜诇讬诐 讗驻砖专 诇专讗讜转 讘注讬谉.
## 讛转诪讜讚讚讜转 注诐 讛讘诇转讬 爪驻讜讬
讛转讻讜谞讛 讛砖谞讬讛 砖讗谞讬 诪讞驻砖 讗爪诇 诪转讻谞讬诐 讛讬讗 讛讘讞讬专讛 诇讛转诪讜讚讚 讙诐 注诐 诪爪讘讬诐 诪驻转讬注讬诐 讘拽讜讚. 讘驻专讜讬拽讟 专讬讬诇住 讝讛 讗讜诪专 诇诪砖诇 转诪讬讚 诇讘讚讜拽 砖讛砖讜专讛 砖谞讬住讬转 诇讛讻谞讬住 诇 DB 讘讗诪转 谞砖诪专讛 讜诇讻转讜讘 拽讜讚 砖讬讜讚注 诇讛讬讻砖诇 讬驻讛 讗诐 讛讬转讛 讘注讬讛.
谞拽讜讚讜转 讘讙讚讜诇 砖讞砖讜讘 诇砖讬诐 诇讘 讗诇讬讛谉 讬讛讬讜:
1. 诇讜讜讚讗 砖转诪讬讚 讗讞专讬 save 讗讜 create 讬砖 讘讚讬拽讛 砖诇 注专讱 讛讛讞讝专.
2. 诇讜讜讚讗 砖诪讜讙讚专 Exception Handler 讙诇讜讘讗诇讬 诇讬讬砖讜诐 讻讚讬 砖诪砖转诪砖讬诐 诇讗 讬拽讘诇讜 诪住讱 "砖讙讬讗转 砖专转".
3. 诇讚讗讜讙 诇 Validation 注诇 诪讬讚注 讙诐 讘诪讜讚诇讬诐 讜讙诐 诇讗讬谞讚拽住讬诐 讘讘住讬住 讛谞转讜谞讬诐.
4. 诇讚讗讜讙 诇注专讻讬 讘专讬专转 诪讞讚诇 讘诪讜讚诇讬诐 讜讘讘住讬住 讛谞转讜谞讬诐.
## 讘讬爪讜注讬诐
讘注讬讛 谞讜住驻转 讗讜驻讬讬谞讬转 诇讬讬砖讜诪讬 Rails 讛讬讗 砖讬诪讜砖 诇讗 谞讻讜谉 讘 ORM 砖讙讜专诐 诇讘注讬讜转 讘讬爪讜注讬诐. 讘注讜诇诐 诪讜砖诇诐 讗谞讞谞讜 专讜爪讬诐 砖诪住驻专 讛驻谞讬讜转 诇讘住讬住 讛谞转讜谞讬诐 诪讻诇 讚祝 讬讛讬讛 讞住讜诐 讜注讚讬祝 砖讬讛讬讛 拽讘讜注. 讘讞讬讬诐 讛讗诪讬转讬讬诐 拽讜专讛 砖讬砖 诪住驻专 诪砖转谞讛 砖诇 砖讗讬诇转讜转, 讗讘诇 讗诐 诪住驻专 讛砖讗讬诇转讜转 讬讻讜诇 诇讙讚讜诇 注讚 讗讬谉 住讜祝 讗谞讞谞讜 讘讘注讬讛.
讘注讬讛 砖诇 砖讗讬诇转讜转 诇讗 讞住讜诪讜转 诪讜驻讬注讛 讻诪注讟 转诪讬讚 讘转讬拽讬讬转 讛 views 讘转讜讱 拽讘爪讬 ERB 讻砖拽讜讚 ERB 诪讘爪注 砖讗讬诇转讜转 讘转讜讱 诇讜诇讗讛. 讚讜讙诪讗 诇拽讜讚 专讬讬诇住 讘注讬讬转讬 讻讝讛 讛讬讗:
<table>
<tr>
<th>User Name</th>
<th>Tasks Count</th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.tasks.count %></td>
</tr>
注讘讜专 讻诇 诪砖转诪砖 诪转讜讱 @users 讗谞讞谞讜 砖讜诇驻讬诐 诪讘住讬住 讛谞转讜谞讬诐 讗转 诪住驻专 讻诇 讛诪砖讬诪讜转 砖诇 讗讜转讜 诪砖转诪砖. 讻讻诇 砖讬讛讬讜 讬讜转专 诪砖转诪砖讬诐 讻讱 讬讛讬讜 讬讜转专 砖诇讬驻讜转 讜讻讱 讛注诪讜讚 讬讬讟注谉 讛专讘讛 讬讜转专 诇讗讟. 转拽诇讛 讻讝讗转 诪讗讜讚 讗讜驻讬讬谞讬转 诇讬讬砖讜诪讬 专讬讬诇住 讜讬砖 讗驻讬诇讜 住驻专讬讛 砖注讜讝专转 诇诪爪讜讗 拽讜讚 注诐 讛讘注讬讛, 讗讘诇 讻砖诪住转讻诇讬诐 注诇 驻专讜讬拽讟 讚讜讙诪讗 讛专讘讛 驻注诪讬诐 讙诐 讘注讬谉 拽诇 诇专讗讜转 讗转 讝讛.
## 讘讚讬拽讜转 讜转讬注讜讚
住注讬祝 讗讞专讜谉 砖讗谞讬 讘讜讚拽 讛讜讗 讗讬讻讜转 讛讘讚讬拽讜转 讜讛转讬注讜讚. 讗诐 驻专讜讬拽讟 讛讚讜讙诪讗 砖讛驻专讬诇讗谞住专讬转 讘讞专讛 诇砖诇讜讞 讻讜诇诇 讗转 拽讜讘抓 讛 Readme 讛讚讬驻讜诇讟讬 砖诇 专讬讬诇住 讝讛 讞砖讜讚. 讗诐 讗讬谉 讘讚讬拽讜转 讝讛 Deal Breaker 讗讘诇 讙诐 讘讛谞讞讛 砖讬砖 讘讚讬拽讜转 讘讛专讘讛 驻专讜讬拽讟讬诐 讛讘讚讬拽讜转 驻砖讜讟 诇讗 讘讜讚拽讜转 讻诇讜诐.
诇讚讜讙诪讗 讘驻专讜讬拽讟 砖诇 谞讬讛讜诇 诪砖讬诪讜转 讗转讛 讬讻讜诇 诇诪爪讜讗 讘讚讬拽讛 砖谞专讗讬转 讻讱:
1. 讻谞住 诇讟讜驻住 "讬爪讬专转 诪砖讬诪讛 讞讚砖讛"
2. 讛讻谞住 讗转 驻专讟讬 讛诪砖讬诪讛 讘讟讜驻住
3. 讜讜讚讗 砖注诇 讛诪住讱 讛讜驻讬注 讛讟拽住讟 "讛诪砖讬诪讛 谞讜爪专讛 讘讛爪诇讞讛"
讝讜 讘讚讬拽讛 讙专讜注讛 讻讬 讛诪讟专讛 砖诇 讛讟讜驻住 讛讬讗 诇讬爪讜专 诪砖讬诪讛 讞讚砖讛, 讜诇讻谉 讛讬讬谞讜 诪爪驻讬诐 砖讘讚讬拽转 讛讟讜驻住 转住转讬讬诐 讘讜讬讚讜讗 讘讘住讬住 讛谞转讜谞讬诐 砖讗讻谉 讛诪砖讬诪讛 讛讞讚砖讛 谞讜爪专讛.
讘讚讬拽讜转 讙专讜注讜转 讘驻专讜讬拽讟 讝讛 诇讗 住讜祝 讛注讜诇诐 讻讬 讝讛 诪砖讛讜 砖讗驻砖专 讬讞住讬转 讘拽诇讜转 诇砖驻专, 讗讘诇 讘讚讬拽讜转 讟讜讘讜转 讘驻专讜讬拽讟 讘讛讞诇讟 讬讻讜诇讜转 诇讛讜住讬祝 讛专讘讛 谞拽讜讚讜转 讜诇砖驻专 讗转 讛专讜砖诐.
讝讜 讛专砖讬诪讛 砖诇讬 - 讗诐 讬砖 诇讻诐 讛爪注讜转 讗讜 讚讘专讬诐 讗讞专讬诐 砖讗转诐 讛讬讬转诐 诪住转讻诇讬诐 注诇讬讛诐 讘驻专讜讬拽讟讬 讚讜讙诪讗 诪讜讝诪谞讬诐 诇住驻专 讘转讙讜讘讜转.1 418
# 讛讘注讬讛 注诐 转砖转讬讜转
讗讞转 讛住讬讘讜转 砖拽砖讛 诇讻转讜讘 拽讜讚 转砖转讬转 讛讬讗 砖转砖转讬转 讝讛 诪砖讛讜 讘讬谞讗专讬: 讗讜 砖讬砖 诇讱 住拽专讬驻讟 讙讬讘讜讬 讗讜 砖讗讬谉; 讗讜 砖讬砖 诇讱 诪注专讻转 讗讬诪讬讬诇讬诐 讗讜 砖讗讬谉. 讻诇 诪讛 砖诪转诇讘砖 注诇 讝讛 讛讜讗 讻讘专 诇讗 拽讜讚 转砖转讬转 讜讗讜转讜 讚讜讜拽讗 拽诇 诇注讚讻谉. 讗讘诇 讛转砖转讬转? 注讚 砖讛讻讘讬砖 诇讗 讘谞讜讬 讘诪诇讜讗讜 诪拽爪讛 诇拽爪讛 讗祝 诪讻讜谞讬转 诇讗 讬讻讜诇讛 诇谞住讜注 注诇讬讜.
讜讝讛 诪讗转讙专 诇讗谞砖讬诐 砖讘讜谞讬诐 诪注专讻讜转 讘诪讬讜讞讚 讗诐 讗谞讞谞讜 专讙讬诇讬诐 诇讛注诇讜转 讙讬专住讗 诇注转讬诐 拽专讜讘讜转 讜讻诇 讛讝诪谉 诇讞讚砖. 讗讝 讛驻讬转讜讬 讛讜讗 诇讜讜转专 注诇 拽讜讚 转砖转讬转 讜驻砖讜讟 诇讛讬砖讗专 注诐 讛转砖转讬转 讛拽讬讬诪转 讜诇讛诇讘讬砖 注诇讬讛 注讜讚 讜注讜讚 驻讬爪'专讬诐. 谞讜拽讬讛 注砖讜 讗转 讝讛 注诐 住讬诪讘讬讗谉 注讚 砖讛讻诇 讛转诪讜讟讟, 讜讘讞讘专讜转 专讘讜转 讜专讜讜讞讬讜转 注讚讬讬谉 专讜讘 拽讜讚 讛转砖转讬转 讛讜讗 讻讝讛 砖谞讻转讘 诇驻谞讬 注砖专 讜讗驻讬诇讜 注砖专讬诐 砖谞讛.
讛谞拽讜讚讛 砖诇诪专讜转 讛拽讜砖讬 讛谞讬讛讜诇讬, 诪讘讞讬谞讛 讟讻谞讬转 讻砖讗谞讞谞讜 诪注讘讬专讬诐 砖谞讬诐 讘诇讬 诇讻转讜讘 诪讞讚砖 转砖转讬讜转 诇讬讘讛 砖诇 讛诪注专讻转 讗谞讞谞讜 诪诪砖讬讻讬诐 诇专讜抓 注诐 转砖转讬转 讬砖谞讛, 诇讗 谞讛谞讬诐 诪讬讻讜诇讜转 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转 讜诇讗讜专讱 讝诪谉 注讜讘讚讬诐 讛专讘讛 讬讜转专 拽砖讛 注诇 讻诇 驻讬爪'专 (诪讛 砖谞拽专讗 Technical Debt).
讻谉 爪专讬讱 诇讛讬讜转 讘专讜专讬诐 砖讛讚讘专 砖爪专讬讱 诇讘谞讜转 注讻砖讬讜 讛讜讗 驻专讜讬拽讟 转砖转讬转, 讜爪专讬讱 诇讛讬讜转 讘专讜专讬诐 注诐 讝讛 砖注讚 砖讛驻专讜讬拽讟 诇讗 讬住转讬讬诐 讗祝 讗讞讚 诇讗 讬讜讻诇 诇讬讛谞讜转 诪诪谞讜 讜讝讛 讗讜诇讬 讬讬拽讞 讝诪谉, 讗讘诇 驻注诐 讘讻诪讛 砖谞讬诐 讛拽诪讛 砖诇 讻讘讬砖 讞讚砖 讘诪注专讻转 讛讬讗 讘诇转讬 谞诪谞注转.
1 418
# 诇讗 爪专讬讱 拽讜专住
讗谞讬 注讚讬讬谉 讝讜讻专 讗转 注爪诪讬 讘转讜专 讬诇讚 讬讜砖讘 讘砖讬注讜专 讜讻讜转讘 讗转 讻诇 诪讛 砖讛诪讜专讛 讗讜诪专转. 讛驻讛 砖诇 讛诪讜专讛 讛讬讛 讛诪拽讜专 讛讬讞讬讚 诇拽讘诇 讬讚注: 讘诇讬 讗讬谞讟专谞讟, 讜注诐 住驻专讬 诇讬诪讜讚 诇讗 诪讚讜讬拽讬诐, 讛砖讗诇讛 "诪讛 谞讻讜谉" 讛讬转讛 讝讛讛 诇砖讗诇讛 "诪讛 讗诪专讛 讛诪讜专讛 讘砖讬注讜专".
讗谞讬 诇讗 讞讜砖讘 砖讗驻砖专 讛讬讜诐 诇讚诪讬讬谉 讗驻讬诇讜 诪爪讘 讻讝讛, 讜讘诪讬讜讞讚 讘转讞讜诐 砖诇谞讜. 讘讻诇 讛专爪讗讛 砖讛注讘专转讬 讜诇讻诇 拽讛诇 - 诇讻诇 讘谉 讗讚诐 讘拽讛诇 讛讬转讛 讙讬砖讛 讘讚讬讜拽 诇讗讜转诐 诪拽讜专讜转 诪讬讚注 讻诪讜 诇讬. 讻诇 讘谉 讗讚诐 讘拽讛诇 讬讻诇 诇讘讚讜拽 讻诇 诪讬诇讛 砖讗谞讬 讗讜诪专 讜讻诇 诪砖转转驻转 注讬专谞讬转 讬讻诇讛 诇讝讛讜转 讘专讙注 讗转 讛讟注讜转 讛讻讬 拽讟谞讛 砖诇讬.
讘转讜讱 讝讛 讛专讘讛 讗谞砖讬诐 砖讜讗诇讬诐 讗转 注爪诪诐 "诪讬 讘讻诇诇 爪专讬讱 讗转 讝讛?", "诇诪讛 讗谞讞谞讜 注讚讬讬谉 爪专讬讻讬诐 拽讜专住讬诐?" 讜讗驻讬诇讜 "注讝讜讘 讗讜转讱 拽讜专住讬诐. 诪转讻谞转讬诐 讟讜讘讬诐 诇讜诪讚讬诐 诇讘讚 诪讛讗讬谞讟专谞讟". 讛专讬, 讗诐 讬砖 诇讬 讙讬砖讛 诇讗讜转诐 诪拽讜专讜转 诪讬讚注 诪讛诐 讛诪专爪讛 诇诪讚, 讗讝 诇诪讛 讗谞讬 爪专讬讻讛 讗转 讛转讬讜讜讱 讛讝讛? 诇讗 讬讛讬讛 讬讜转专 拽诇 讜诪讚讜讬拽 诇诇诪讜讚 讬砖专 诪讛诪拽讜专?
讗讘诇 - 讗诐 讗讬谉 转注讜讚讛, 讜讗诐 讗讬谉 讬讚注 住讜讚讬, 讜讗驻讬诇讜 讗讬谉 讞讜讜讬讛 讻讬驻讬转 讘诪讬讜讞讚 (讻讬, 讘讜讗讜, 专讜讘 讛讛专爪讗讜转 砖讛讬讬转讬 讘讛谉 讛讬讜 讚讬 诪砖注诪诪讜转), 讗讝 讗讜诇讬 讘讻诇诇 诇讗 爪专讬讱 拽讜专住讬诐 讬讜转专?
诇驻讞讜转 讘转讞讜诐 砖诇谞讜 砖诇 转讻谞讜转 讗谞讬 讞讜砖讘 砖讛专讘讛 讬讜转专 诪讜注讬诇 诇讛住转讻诇 注诇 讛拽讜专住 讘转讜专 "讛讝讚诪谞讜转" 诪讗砖专 讘转讜专 "爪讜专讱". 讗转 诇讗 爪专讬讻讛 拽讜专住 讘砖讘讬诇 诇诇诪讜讚 讗转 讛讞讜诪专. 讗诐 讗转 讗讜讛讘转 讛住讘专 砖诇 诪讜专讛 诪住讜讬诐 注讚讬祝 诇爪驻讜转 讘讜讬讚讗讜. 讗讜 讗诐 讗转 诪注讚讬驻讛 讗驻砖专 讙诐 诇诇诪讜讚 诪住驻专, 诪转讬注讜讚, 诪讻诇 诪专爪讛 讗讞专 讘注讜诇诐 讗讜 讗驻讬诇讜 诪拽专讬讗转 拽讜讚 讛诪拽讜专 注爪诪讜.
讗讘诇 拽讜专住 讬讻讜诇 (讜爪专讬讱) 诇讛讬讜转 讛讝讚诪谞讜转:
1. 讛讝讚诪谞讜转 诇讻转讜讘 拽讜讚 讬讞讚 注诐 讗谞砖讬 诪拽爪讜注 讻诪讜讱, 讜诇拽讘诇 专注讬讜谞讜转 砖诇讗 讞砖讘转 注诇讬讛诐 诇讘讚.
2. 讛讝讚诪谞讜转 诇拽专讜讗 拽讜讚 砖诇 讗讞专讬诐 讜诇拽讘诇 诪讛诐 专注讬讜谞讜转 砖转讜讻诇讬 诇讬讬砖诐 讗讞专 讻讱 注诇 讛诪注专讻转 砖诇讱.
3. 讛讝讚诪谞讜转 诇专讗讜转 讘讝诪谉 讗诪转 讗讬讱 讗谞砖讬诐 讗讞专讬诐 诪转诪讜讚讚讬诐 注诐 讗转讙专讬诐, 讜讗讬讱 谞专讗讛 转讛诇讬讱 驻讬转讜讞 砖诇 诪转讻谞转讬诐 讘诪拽讜诪讜转 讗讞专讬诐.
4. 讛讝讚诪谞讜转 诇讞讘专 讘讬谞讱 诇讘讬谉 诪转讻谞转讬诐 砖注讜讘讚讬诐 讘讗讜转讛 砖驻转 转讻谞讜转 讗讘诇 注诇 诪讜爪专讬诐 讗讞专讬诐 讜讘诪拽讜诪讜转 讗讞专讬诐.
5. 讛讝讚诪谞讜转 诇谞住讜转 讟讻谞讜诇讜讙讬讛 讞讚砖讛, 诇讟注讜转 讜诇转拽谉 讘住讘讬讘讛 讘讟讜讞讛 诇驻谞讬 砖诪讙讬注讬诐 诇讘谞讜转 诪注专讻转 讗诪讬转讬转.
讗转 讻诇 讛讛讝讚诪谞讜讬讜转 讛讗诇讛 讗转诐 转拽讘诇讜 讘诪住诇讜诇讬 讛讘讜讟拽诪驻 讛讞讚砖讬诐 驻讛 讘讟讜拽讜讚. 讗转诐 诇讗 爪专讬讻讬诐 讗转 讛拽讜专住 讛讝讛 - 讗讘诇 讗诐 讗转诐 诪转讻谞转讬诐 讟讜讘讬诐, 讗转诐 讘讟讜讞 专讜爪讬诐 讗讜转诐. 诪转讞讬诇讬诐 注讜讚 砖讘讜注 讜讞爪讬 (讛拽讘讜爪讛 砖诇 驻讬讬转讜谉 讻讘专 讻诪注讟 诪诇讗讛 讗讝 讗诐 讗转诐 诪转诇讘讟讬诐 注讚讬祝 砖转讬专砖诪讜 诇专讬讗拽讟 砖讬讛讬讛 诇讬 诪讗讜讝谉):
专讬砖讜诐 诇拽讜专住 驻讬讬转讜谉 讘诪住诇讜诇 讘讜讟拽诪驻 讘驻讬讙'诪讛
专讬砖讜诐 诇拽讜专住 专讬讗拽讟 讘诪住诇讜诇 讘讜讟拽诪驻 讘驻讬讙'诪讛
1 418
# 转讞诇讬祝 驻砖讜讟 诇 create-react-app
诇诪讛 讻诇讬诐 爪专讬讻讬诐 诇讛讬讜转 讻诇 讻讱 诪住讜讘讻讬诐? 讛转砖讜讘讛 驻砖讜讟讛: 讻诇 驻注诐 砖讬讜爪讗 讻诇讬 讞讚砖 讛讜讗 诪谞住讛 诇讛讬讜转 讬讜转专 驻砖讜讟 诪讝讛 砖讘讗 诇驻谞讬讜 (讗谞讞谞讜 讛 create-react-app 讛讞讚砖. 讗爪诇谞讜 讗讬谉 驻讬爪'专讬诐 讜讛讻诇 驻砖讜讟 注讜讘讚), 讜讗讝 讗谞砖讬诐 诪转讞讬诇讬诐 诇讛砖转诪砖 讘讜 讜诪讘拽砖讬诐 讻诇 诪讬谞讬 驻讬爪'专讬诐, 诇讗讟 诇讗讟 讛讻诇讬 讛讞讚砖 诪住转讘讱 讜讞讝专谞讜 诇讛转讞诇讛 讻讚讬 诇驻转讞 讻诇讬 讞讚砖 (诇诇讗 驻讬爪'专讬诐 - 讛讻诇 驻砖讜讟 注讜讘讚).
讘拽讬爪讜专 讛讻诇讬 讛讞讚砖 讛讗讛讜讘 注诇讬讬 讘讬诪讬诐 讗诇讛 谞拽专讗 nano-react-app 讜讛讜讗 转讞诇讬祝 诪诪砖 驻砖讜讟 诇
create-react-app (拽讬讘诇 讻讘专 诪注诇 300 讻讜讻讘讬诐 讘讙讬讟讛讗讘). 讜讝讛 诪爪讞讬拽 讻讬 讛讜讗 讘讗诪转 诇讗 注讜砖讛 讻诇讜诐 - 讻诇讜诪专 讛讜讗 注讜砖讛 拽爪转. 讛讜讗 诇讜拽讞 讟诪驻诇讬讬讟 诪讛讗讬谞讟专谞讟 诇讬讬砖讜诐 专讬讗拽讟 JavaScript 讗讜 TypeScript, 诪砖谞讛 拽爪转 讗转 讛转讜讻谉 讘拽讘爪讬诐 讜讝讛 讘注专讱 讻诇 讛住讬驻讜专.
讘谞讬讙讜讚 诇 create-react-app 讛讜讗 诇讗 诪讘讟讬讞 诇讻诐 驻专讜讬拽讟 注诐 讻诇 讛转讜住驻讬诐 讜讻诇 讛住驻专讬讜转 诪讞讜讘专讜转 讘诪拽讜诐 讗诇讗 讘讚讬讜拽 诇讛讬驻讱. 讗转诐 转拽讘诇讜 拽讜诪驻讜谞谞讟讛 拽讟谞讛 (讘 JavaScript 讗讜 讘 TypeScript) 讜转诪砖讬讻讜 诇讘讚. 讘讚讬拽讜转? 讛爪讞拽转诐 讗讜转讜. 住专讘讬住 讜讜专拽专? 诇诪讬 讬砖 讻讞 诇讝讛. 讟诪驻诇讬讬讟住 诪讜专讻讘讬诐 注诐 Redux 讗讜 MobX? 注讝讘讜, 转讻转讘讜 诇讘讚.
讜注讻砖讬讜 专拽 谞砖讗专 诇讛讘讬谉: 讗诐 讻诇 诪讛 砖爪专讬讱 讝讛 诇砖讬诐 讻诪讛 拽讘爪讬诐 讘转讬拽讬讛, 讘砖讘讬诇 诪讛 讛讬讬谞讜 爪专讬讻讬诐 讗转 讛讻诇讬 讛讝讛 诪诇讻转讞讬诇讛?1 418
# 讗专讘注讛 讟讬驻讬诐 诇讛注讘专转 讘讬拽讜专转 讬注讬诇讛 讬讜转专 讘 Code Review 讛讘讗 砖诇讻诐
讛谞讝拽 砖诇 讘讬拽讜专转 讙专讜注讛 讬讻讜诇 诇讛讬讜转 讙讚讜诇 讘讛专讘讛 诪讛转讜注诇转 砖诇讛 - 讘诪讬讜讞讚 讻砖诪讚讘专讬诐 注诇 拽讜讚. 讬砖 注讚讬讬谉 拽讘讜爪讜转 砖诇 拽讜讚 驻转讜讞 砖讘讛谉 诪转讻谞转讬诐 讞讚砖讬诐 爪驻讜讬讬诐 诇拽讘诇 诪讘讜诇 砖诇 讛注诇讘讜转 注诇 讻诇 砖讜专转 拽讜讚 诇讗 讘诪拽讜诐, 讗讘诇 讛讗诪转 砖讝讛 讛讜诇讱 讜诪转诪注讟 讜讗驻讬诇讜 诇讬谞讜住 讟讜专讜讜诇讚住 讻讘专 诪转讞讬诇 诇讛讬讜转 谞讞诪讚. 讗讘诇 讛住讻谞讛 注讚讬讬谉 拽讬讬诪转 讙诐 讘讞讜抓 讜讙诐 讘诪拽讜诪讜转 注讘讜讚讛 诪住讜讬诪讬诐.
讘讜讗讜 谞谞住讛 诇讛转诪拽讚 专讙注 讜诇专讗讜转 讗讬讝讛 诪讗驻讬讬谞讬诐 讬砖 诇讘讬拽讜专转 讙专讜注讛 讜讗讬讱 讗谞讞谞讜 讬讻讜诇讬诐 诇讛注讘讬专 讘讬拽讜专转 讬注讬诇讛 讬讜转专 讘 Code Review 讛讘讗 砖诇谞讜:
## 讛注讘讬专讜 讘讬拽讜专转 注诇 讛拽讜讚 - 诇讗 注诇 讛诪转讻谞转
讛讟注讜转 讛讻讬 讙讚讜诇讛 砖讗谞砖讬诐 注讜砖讬诐 讘 Code Reviews 讜砖讬讻讜诇讛 诇讛专讜住 讗转 讻诇 讛拽住诐 讛讬讗 诇讛注讘讬专 讘讬拽讜专转 (讗驻讬诇讜 诪专讜诪讝转) 注诇 讛讘谉 讗讚诐 砖讻转讘 讗转 讛拽讜讚 讘诪拽讜诐 注诇 讛拽讜讚 注爪诪讜.
讘 Code Review 讗讬谉 诪拽讜诐 诇讛注专讜转 讻诪讜 "讗讬驻讛 诇诪讚转 诇讻转讜讘 讻讻讛?", "讗转 讟专讞转 讘讻诇诇 诇讘讚讜拽 讗转 讛拽讜讚 诇驻谞讬 讛拽讜诪讬讟?" 讜讗驻讬诇讜 诇讜讜转专 注诇 讛"诪诪讱 诇讗 讛讬讬转讬 诪爪驻讛 诇讟注讜转 讻讝讗转".
讻砖讬讜砖讘讬诐 注诐 讞讘专 讗讜 讞讘专讛 诇 Code Review 讞砖讜讘 诇注砖讜转 诪讗诪抓 诇砖讻讜讞 诪讬 讛讘谉 讗讚诐 砖讻转讘 讗转 讛拽讜讚 讜诇讛转诪拽讚 讘拽讜讚 注爪诪讜 讜讘讚讘专讬诐 讛讟讜讘讬诐 讜讛讙专讜注讬诐 砖讘讜. 讻讻诇 砖谞讬砖讗专 讬讜转专 诪诪讜拽讚讬诐 讻讱 讬砖 讬讜转专 住讬讻讜讬 砖讛诪转讻谞转 砖诪拽讘诇 讗转 讛讘讬拽讜专转 讬诪砖讬讱 诇讛拽砖讬讘 讜诇讛砖转驻专.
## 砖谞讬 "讻谉" 注诇 讻诇 "诇讗"
讟讬驻 讟讜讘 转诪讬讚 讜讘诪讬讜讞讚 讻砖拽讜专讗讬诐 拽讜讚. 讛专注讬讜谉 诇讛转诪拽讚 讘诪讛 砖讗驻砖专 讻谉 诇注砖讜转 讜讗讬讱 讗驻砖专 诇转拽谉 讗转 讛讘注讬讜转 讘诪拽讜诐 讘讘注讬讜转 注爪诪谉 讜讘讻诪讛 讛谉 讞诪讜专讜转.
诇讻谉 讘诪拽讜诐 诇讛讙讬讚 "诇砖讗讬诇转讛 讛讝讗转 诇讜拽讞 讬讜转专 诪讚讬 讝诪谉 诇专讜抓" 注讚讬祝 诇诇讻转 注诇 "讗谞讬 专讜讗讛 砖讛 Migration 讻讗谉 诇讗 讬讜爪专转 讗讬谞讚拽住讬诐 注诇 讻诇 讛注诪讜讚讜转 砖专诇讜讜谞讟讬讜转 诇砖诇讬驻讜转. 砖讜讜讛 转诪讬讚 诇驻谞讬 讻转讬讘转 Migration 诇注砖讜转 专砖讬诪讛 砖诇 讻诇 讛注诪讜讚讜转 砖讞砖讜讘讜转 诇砖诇讬驻讜转 讻讚讬 砖谞讚注 讗讬驻讛 诇砖讬诐 讗转 讛讗讬谞讚拽住讬诐. 讘讜讗 谞专讗讛 讗讬讱 注砖讬谞讜 讗转 讝讛 讘讟讘诇讗讜转 讗讞专讜转 讘诪注专讻转".
讘爪讜专讛 讻讝讗转 讗谞讞谞讜 谞讜转谞讬诐 诇讘谉 讗讚诐 讗转 讛讻诇讬诐 诇讛讘讬谉 注诇 诪讛 诇讬爪讜专 讗讬谞讚拽住讬诐 讜讻谉 讗讬讱 诇讛住转讻诇 注诇 拽讜讚 讬砖谉 讟讜讘 讜诇诇诪讜讚 诪诪谞讜.
讗讜 讘诪拽讜诐 诇讛讙讬讚 "诪讬 讻讜转讘 eval 讘爪讚 讛砖专转!? 讗讬驻讛 诇诪讚转 诇讻转讜讘 拽讜讚???" 谞注讚讬祝 诇讛讙讬讘 讘诪转讬谞讜转 "讗谞讬 专讜讗讛 砖讘讞专转 诇讛砖转诪砖 讘 eval 讻讚讬 诇驻注谞讞 讗转 讛 JSON 砖讛讙讬注 诪讛 JavaScript. 砖讬诪讜砖 讻讝讛 讘 eval 讛讜讗 讘注讬讬转 讗讘讟讞讛 专爪讬谞讬转. 讗爪诇谞讜 讘诪注专讻转 诪驻注谞讞讬诐 JSON-讬诐 注诐 JSON.parse. 讜讗讙讘 讬讛讬讛 讬讜转专 拽诇 诇讛注讘讬专 讗转 讛驻专诪讟专讬诐 讛讗诇讛 讘转讜专 专砖讬诪讛 驻砖讜讟讛 讘诪拽讜诐 讘转讜专 JSON".
讜讻讻诇 砖讗转诐 诪爪诇讬讞讬诐 诇讛爪讬注 讬讜转专 专注讬讜谞讜转 诇砖讬驻讜专 注诇 讻诇 讘注讬讛 砖诪爪讗转诐 讻讱 注讝专转诐 诇诪转讻谞转 砖讗讬转讻诐 诇专讗讜转 讚专讻讬诐 谞讜住驻讜转 诇驻转讜专 讗转 讗讜转讛 讘注讬讛 讜谞转转诐 诇讜 讻诇讬诐 诇讛爪诇讬讞 讘驻注诐 讛讘讗讛.
## 讛讬讻谞住讜 诇专讗砖 砖诇 诪讬 砖讻转讘 讗转 讛拽讜讚
讗讞讚 讛讞诇拽讬诐 讛讻讬 拽砖讬诐 讘 Code Review 讛讜讗 诇讛讬讻谞住 诇专讗砖 砖诇 诪讬 砖讻转讘 讗转 讛拽讜讚 讜诇讛讘讬谉 讗转 讛讗讬诇讜爪讬诐, 讗转 讛专爪讜谞讜转 讜讗转 讛讛专讙诇讬诐 砖诇讛诐 诇驻谞讬 砖讘讻诇诇 讗转诐 诪注诇讬诐 讗转 讛讛注专讛 讛专讗砖讜谞讛. 讗谞讬 讗讜讛讘 诇讛转讞讬诇 Code Review 讘拽专讬讗讛 讻诇诇讬转 砖诇 讻诇 讛拽讜讚 讜讗诐 讛讘谉 讗讚诐 砖讻转讘 讗转 讛拽讜讚 诇讬讚讬 讗讝 讘讛转讞诇讛 讗谞讬 砖讜讗诇 讛诪讜谉 讛诪讜谉 砖讗诇讜转 讻讚讬 诇讛讘讬谉 诪讗讬驻讛 讻诇 讚讘专 讛讙讬注.
讻砖诪转讻谞转 诇讗 讝讻专 诇诪讞讜拽 拽讟注 拽讜讚 讗讜 讛注专讛 砖谞讜爪专 讗讜讟讜诪讟讬转 诪讗讬讝讛 Generator 讝讛 讛专讘讛 驻讞讜转 讙专讜注 诪讗砖专 讗诐 讛诪转讻谞转 讻转讘 诇讘讚 拽讟注 拽讜讚 诪讬讜转专 砖讗祝 讗讞讚 诇讗 拽讜专讗 诇讜.
## 讛爪讬注讜 讚专讱 驻注讜诇讛 讘专讜专讛 诇砖讬驻讜专 讘讛诪砖讱
讘诪讛诇讱 讛 Code Review 讞砖讜讘 诇讛讘讬谉 讗讬讝讛 驻注专讬 讬讚注 讙专诪讜 诇讻转讬讘转 讛拽讜讚 注诐 讛讟注讜讬讜转. 讘爪讜专讛 讻讝讗转 谞讜讻诇 诇讛爪讬注 讘住讜祝 讛 Review 讚专讱 注讘讜讚讛 讘专讜专讛 讜住驻爪讬驻讬转 诇砖讬驻讜专 驻注专讬 讬讚注 讗诇讛.
诇讚讜讙诪讗 讗诐 注讘专转讬 注诇 拽讜讚 JavaScript 砖诪砖转诪砖 讘 var, 讗讜讻诇 诇讘专专 讛讗诐 讛诪转讻谞转 砖讻转讘 讗转 讛拽讜讚 讬讜讚注 讗转 讛讛讘讚诇 讘讬谉 var, let 讜 const 讜讗诐 诇讗 讗讜讻诇 诇讛爪讬注 诇讜 诪讚专讬讱 讟讜讘 注诇 讛讛讘讚诇 讘讬谞讬讛诐 讻讚讬 诇讛砖转驻专 诇驻注诐 讛讘讗讛.
讻讻诇 砖讗谞讞谞讜 讬讜讚注讬诐 诇讛驻谞讜转 讗转 讛诪转讻谞转讬诐 砖讗讬转谞讜 诇诪砖讗讘讬 诇讬诪讜讚 讟讜讘讬诐 讜诪讚讜讬拽讬诐 讬讜转专 砖诪转讗讬诪讬诐 诇讘注讬讜转 讜诇驻注专讬 讛讬讚注 砖诇讛诐, 讻讱 注讝专谞讜 诇讛诐 诇讛砖转驻专 讜诇讛讬讜转 诪转讻谞转讬诐 讟讜讘讬诐 讬讜转专 诇拽专讗转 讛 Code Review 讛讘讗.
1 418
# 诪讛 讬砖 诇讱 谞讙讚 for...in
讗讞转 讛诇讜诇讗讜转 砖讛讬讜 驻注诐 驻讜驻讜诇专讬讜转 讘 JavaScript 讗讘诇 讘砖谞讬诐 讛讗讞专讜谞讜转 诪转讻谞转讬诐 讻诪注讟 讜讛驻住讬拽讜 诇讛砖转诪砖 讘讛谉 讛讬讗 诇讜诇讗转 for...in. 诇讜诇讗讛 讝讜 谞讜注讚讛 诇专讜抓 注诇 讻诇 讛诪驻转讞讜转 砖诇 讗讜讘讬拽讟 诇诪砖诇 讻讚讬 诇讛讚驻讬住 讗转 讻诇 转讜讻谉 讛讗讜讘讬拽讟 讗讜 诇讞驻砖 诪驻转讞 砖诇 注专讱 诪住讜讬诐.
讘讚讜讙诪讗 诪注砖讬转 谞谞讬讞 砖讬砖 诇谞讜 讗讜讘讬拽讟 砖诪讞讝讬拽 讻转讜讘讜转 诪讬讬诇 砖诇 诪砖转诪砖讬诐:
const email = {
bob: 'bob@gmail.com',
jane: 'jane@gmail.com',
dave: 'dave@hotmail.com',
};
讗讝 谞讜讻诇 诇讛砖转诪砖 讘诇讜诇讗转 for...in 讻讚讬 诇讛讚驻讬住 讗转 讻诇 讛讗谞砖讬诐 砖讬砖 诇讛诐 讻转讜讘转 诪讬讬诇 讘讙'讬诪讬讬诇:
for (let name in email) {
const address = email[name];
if (address.endsWith('@gmail.com')) {
console.log(name);
}
}
讗讘诇 - 诇讜诇讗转 for...in 讻讜诇诇转 讙诐 诪讜拽砖 拽讟谉. 讛诪驻转讞讜转 砖讞讜讝专讬诐 讛诐 诇讗 专拽 讛诪驻转讞讜转 诪讛讗讜讘讬拽讟 砖讗转诐 住讜专拽讬诐, 讗诇讗 讙诐 讛诪驻转讞讜转 诪讻诇 讛 Prototypes 砖诇 讗讜转讜 讗讜讘讬拽讟. 诇讻谉 讛拽讜讚 讛讘讗 讬讚驻讬住 3:
let count = 0;
const one = { a: 10, b: 20 };
const two = Object.create(one);
two.c = 30;
for (let k in two) {
// count the keys
count ++;
}
console.log(count);
讛诇讜诇讗讛 住驻专讛 砖谞讬 诪驻转讞讜转 诪讛讗讜讘讬拽讟 one 讜注讜讚 诪驻转讞 讗讞讚 诪讛讗讜讘讬拽讟 two 讜讻讱 讛讙讬注讛 诇-3. 讻砖讬砖 诇谞讜 讗讜讘讬拽讟 讘讬讚 诇讗 转诪讬讚 讗谞讞谞讜 讬讜讚注讬诐 诇爪驻讜转 诪讬 讛 Prototype 砖诇讜 讜讗讬讝讛 诪讗驻讬讬谞讬诐 讛讙讬注讜 诪讗讜转讜 Prototype, 讜诇讻谉 诇讜诇讗讜转 for...in 注诇讜诇讜转 诇专讜抓 注诇 讬讜转专 诪驻转讞讜转 诪诪讛 砖爪讬驻讬谞讜.
讘拽讜讚 JavaScript 讞讚砖 讗谞讞谞讜 诪注讚讬驻讬诐 诇讛砖转诪砖 讘驻讜谞拽爪讬讛 Object.keys 砖诪讞讝讬专讛 专拽 讗转 讛诪驻转讞讜转 砖诇 讛讗讜讘讬拽讟 砖讛注讘专转诐 诇讛. 拽讜讚 诪拽讘讬诇 注诐 Object.keys 讬专讗讛 讻讱 讜讛驻注诐 讬讚驻讬住 1:
let count = 0;
const one = { a: 10, b: 20 };
const two = Object.create(one);
two.c = 30;
for (let k of Object.keys(two)) {
// count the keys
count ++;
}
console.log(count);1 418
# 住讬讙谞诇讬诐
讻砖讗谞讞谞讜 诪讞驻砖讬诐 诇讙讬讬住 诪转讻谞转转 讞讚砖讛 诇爪讜讜转 讛专讘讛 驻注诪讬诐 诪住驻专 讛诪讜注诪讚讬诐 讙讚讜诇 讘讛专讘讛 诪讻诪讜转 讛讗谞砖讬诐 砖讗谞讞谞讜 爪专讬讻讬诐 - 讗讜 讘诪讬诇讬诐 讗讞专讜转 注诇 讻诇 讗讞转 砖转驻住讜诇 讬讙讬注讜 3 诪讜注诪讚讜转 谞讜住驻讜转.
讘住讬讟讜讗爪讬讛 砖诇 专讗讬讜谉 注讘讜讚讛 诪讗讜讚 拽砖讛 诇讛转专砖诐 诪讻诇 讛讬讻讜诇转 讛讗讬谞讟诇拽讟讜讗诇讬转 砖诇 讛诪讜注诪讚 讜诇讻谉 讛专讘讛 诪讗讜讚 驻注诪讬诐 讞诇拽 诪讛专讗讬讜谉 讛讜讗 砖诇讘 "讛诪住谞谞转". 讘砖诇讘 讝讛 讗谞讞谞讜 注砖讜讬讬诐 诇讛爪讬讙 诇诪专讜讗讬谉 砖讗诇讛 诪拽爪讜注讬转 诪转讜讱 诪讟专讛 诇注讜专专 讚讬讜谉, 讜讗讝 谞讞驻砖 讘转砖讜讘讜转 住讬讙谞诇讬诐 砖讗讜诪专讬诐 砖讛诪转讻谞转 讛讝讛 诇讗 诪转讗讬诐 诇谞讜. 讘诪砖讞拽 讛讝讛 诇讻诇 诪专讗讬讬谉 讜诪专讗讬讬谞转 讬砖 住讬讙谞诇讬诐 讗讞专讬诐 砖讛诐 诪讞驻砖讬诐 讜诇讻谉 讞砖讜讘 诪讗讜讚 诇讛讻讬专 讗转 讛住讬讙谞诇讬诐 讛专注讬诐 讜诇谞拽讜转 讗讜转诐 诪讛诪注专讻转 砖诇谞讜 讻讚讬 砖诇讗 谞讝专讜拽 讛注专讛 讟讬驻砖讬转 讘讟注讜转.
讜讘讙诇诇 砖讗谞讬 讗讜讛讘 诇讚讘专 讘讙讜讘讛 讛注讬谞讬讬诐 讘讜讗讜 谞专讗讛 诪住驻专 讚讜讙诪讗讜转 诪转讞讜诐 驻讬转讜讞 Web 诇住讬讙谞诇讬诐 砖注砖讜讬讬诐 诇驻住讜诇 讗转讻诐 诪讛转驻拽讬讚 讛讘讗:
1. 砖讬诪讜砖 讘诪谞讙谞讜谞讬诐 讬砖谞讬诐 讜讙专讜注讬诐 砖诇 JavaScript - 谞讻讜谉, 讻谞专讗讛 讬讛讬讜 诪拽讜诪讜转 砖讬驻住诇讜 讗转讻诐 讻讬 讻转讘转诐 var 讘诪拽讜诐 const 讘转专讙讬诇 讛讘讬转, 讗讘诇 讛专讘讛 讬讜转专 住讘讬专 诇讛讬驻住诇 注诇 诪谞讙谞讜谞讬诐 讙专讜注讬诐 讘讗诪转. 砖讬诪讜砖 讘 eval 讘诪拽讜诐 讘 JSON.parse 诇诪砖诇 讬讛讬讛 讚讙诇 讗讚讜诐 诇专讜讘 诪转讻谞转讬 讛 Front 砖讗谞讬 诪讻讬专. 讗讜转讜 讚讘专 诇讙讘讬 with 讗讜 onclick 讘转讜专 诪讗驻讬讬谉 砖诇 转讙讬转 HTML.
2. 讘注讬讜转 讗讘讟讞转 诪讬讚注 - 注讚讻讜谉 innerHTML 诪转讜讱 拽诇讟 诇讗 诪住讜谞谉 砖讛讙讬注 诪讛砖专转 讝讛 讚讙诇 讗讚讜诐 诇讻诇 诪讬 砖讗讬 驻注诐 谞讻讜讜讛 诪转拽诇转 XSS.
3. 讘讬爪讜注讬 JavaScript 讝讛 诇讗 诪砖讛讜 砖讛专讘讛 讗谞砖讬诐 诪转专讙砖讬诐 诪诪谞讜, 讗诇讗 讗诐 讻谉 诪诪砖 转注砖讜 砖讟讜讬讜转. 诇专讜抓 讘诇讜诇讗讛 注诇 讻诇 讛讗诇诪谞讟讬诐 讘注诪讜讚 讘诪拽讜诐 诇讛砖转诪砖 讘 querySelector 诪诪讜拽讚 讬讜转专 诇诪砖诇 讬专讬诐 讛专讘讛 讙讘讜转 讜讗讜转讜 讚讘专 诇讙讘讬 讛讙讚专讛 砖诇 讬讜转专 诪讚讬 Event Handler 讘诪拽讜诐 诇讛砖转诪砖 讘 Delegation.
诇爪注专讬 讙诐 讻砖讗谞讞谞讜 讬讜讚注讬诐 讘专讗砖 讗讬讱 爪专讬讱 诇讛转谞讛讙, 讛专讘讛 驻注诪讬诐 讘住讬讟讜讗爪讬讛 诪诇讞讬爪讛 砖诇 专讗讬讜谉 注讘讜讚讛 讗讜 讘讻转讬讘转 拽讜讚 讗诪讬转讬 讘诇讞抓 砖诇 诇讜讞讜转 讝诪谞讬诐 讗谞讞谞讜 砖讜讻讞讬诐 讜诪转注诇诪讬诐 诪拽讜讚 讙专讜注 砖讗谞讞谞讜 讻讜转讘讬诐. 讛讚专讱 诇讛讬驻讟专 诪讛专讙诇讬诐 专注讬诐 讛讬讗 拽讜讚诐 讻诇 诇砖讬诐 诇讘 讗诇讬讛诐, 讗讞专讬 讝讛 诇谞拽讜转 讗讜转诐 诪讛拽讜讚 砖诇谞讜 讜讗讝 诇讛诪砖讬讱 讜诇讞讝讜专 注诇 讛驻注讜诇讛 砖讜讘 讜砖讜讘 讘诪住讙专转 讗讬诪讜谉. 讚讜讜拽讗 讻砖讗谞讞谞讜 住诇讞谞讬诐 讻诇驻讬 注爪诪谞讜 (谞讜, 讝讛 专拽 转专讙讬诇... 注讝讜讘 讝讛 专拽 讘讙诇诇 讛诇讞抓 砖诇 讛专讗讬讜谉, 讘讞讬讬诐 讛讗诪讬转讬讬诐 讗谞讬 诇讗 讻讻讛 讜讻讜') 讗谞讞谞讜 诪注讜讚讚讬诐 讗转 讛讛专讙诇 讜诪讞讝拽讬诐 讗转 讛转讜讚注讛 砖转讻谞讜转 谞讻讜谉 讛讜讗 诪砖讛讜 砖爪专讬讱 诇讛转讗诪抓 讘砖讘讬诇讜.
讜讚讞讬驻讛 拽讟谞讛 诇住讬讜诐- 讛专讘讛 讗谞砖讬诐 讞讜砖讘讬诐 砖讘拽讜专住 爪专讬讱 专拽 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛. 讗讘诇 讛讗诪转 砖拽讜专住 讛讜讗 讛诪拽讜诐 讛诪讜砖诇诐 诇讗 专拽 诇诇诪讜讚 讗讬讱 爪专讬讱 诇注砖讜转 讗诇讗 讙诐 诇转专讙诇 讜诇讗诪谉 讗转 砖专讬专讬 讛 Best Practice 讻讚讬 砖讛讗讬谞讟讜讗讬爪讬讛 讛专讗砖讜谞讛 砖诇谞讜 转讛讬讛 诇驻转讜专 讗转 讛讘注讬讜转 讘爪讜专讛 讛谞讻讜谞讛. 讝讗转 讛讞砖讬讘讜转 砖诇 转专讙讜诇 讜 Code Review 讻讞诇拽 诪转讛诇讬讱 讛诇讬诪讜讚. 讘注讜讚 讻砖讘讜注讬讬诐 讗谞讬 讛讜诇讱 诇驻转讜讞 砖谞讬 拽讜专住讬诐 专讗砖讜谞讬诐 砖讛讜诇讻讬诐 诇砖讬诐 讗转 讛转专讙讜诇 讜讛讗讬诪讜谉 讘诪专讻讝 讜讬注讝专讜 诇讻诐 讙诐 诇诇诪讜讚 讗转 讛讟讻谞讜诇讜讙讬讛 讜讙诐 诇驻转讞 讛专讙诇讬 注讘讜讚讛 谞讻讜谞讬诐 砖讬砖讗专讜 讗转讻诐 诇诪砖讱 砖谞讬诐.
驻专讟讬诐 注诇 讛诪住诇讜诇讬诐 讘拽讬砖讜专讬诐-
拽讜专住 Python 讘诪住诇讜诇 讘讜讟拽诪驻 讘驻讬讙'诪讛.
拽讜专住 React 讘诪住诇讜诇 讘讜讟拽诪驻 讘驻讬讙'诪讛.
