ಕೈವ್ ಗೋ ಮೀಟಪ್ ಮೇ 2018:
ಮುನ್ನಡೆ: - ಎಲ್ಲರಿಗು ನಮಸ್ಖರ! ಇಲ್ಲಿರುವುದಕ್ಕೆ ಧನ್ಯವಾದಗಳು! ಇಂದು ನಾವು ಇಬ್ಬರು ಅಧಿಕೃತ ಸ್ಪೀಕರ್ಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ - ಲಿಯೋಶಾ ಮತ್ತು ವನ್ಯಾ. ನಮಗೆ ಸಾಕಷ್ಟು ಸಮಯವಿದ್ದರೆ ಇನ್ನೂ ಎರಡು ಇರುತ್ತದೆ. ಮೊದಲ ಸ್ಪೀಕರ್ ಅಲೆಕ್ಸಿ ಗ್ರಾಚೆವ್, ಅವರು ಗೋಫರ್ಜೆಎಸ್ ಬಗ್ಗೆ ನಮಗೆ ತಿಳಿಸುತ್ತಾರೆ.
ಅಲೆಕ್ಸಿ ಗ್ರಾಚೆವ್ (ಇನ್ನು ಮುಂದೆ - ಎಜಿ): - ನಾನು ಗೋ ಡೆವಲಪರ್ ಆಗಿದ್ದೇನೆ ಮತ್ತು ನಾನು ಗೋದಲ್ಲಿ ವೆಬ್ ಸೇವೆಗಳನ್ನು ಬರೆಯುತ್ತೇನೆ. ಕೆಲವೊಮ್ಮೆ ನೀವು ಮುಂಭಾಗವನ್ನು ಎದುರಿಸಬೇಕಾಗುತ್ತದೆ, ಕೆಲವೊಮ್ಮೆ ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ಪ್ರವೇಶಿಸಬೇಕಾಗುತ್ತದೆ. ಮುಂಭಾಗದಲ್ಲಿ ಗೋ ಕುರಿತು ನನ್ನ ಅನುಭವ ಮತ್ತು ಸಂಶೋಧನೆಯ ಬಗ್ಗೆ ಮಾತನಾಡಲು ನಾನು ಬಯಸುತ್ತೇನೆ.
ದಂತಕಥೆಯು ಹೀಗಿದೆ: ಮೊದಲು ನಾವು ಮುಂಭಾಗದಲ್ಲಿ ಗೋ ಅನ್ನು ಏಕೆ ಚಲಾಯಿಸಲು ಬಯಸುತ್ತೇವೆ ಎಂಬುದರ ಕುರಿತು ನಾವು ಮಾತನಾಡುತ್ತೇವೆ, ನಂತರ ಇದನ್ನು ಹೇಗೆ ಮಾಡಬಹುದು ಎಂಬುದರ ಕುರಿತು ನಾವು ಮಾತನಾಡುತ್ತೇವೆ. ಎರಡು ಮಾರ್ಗಗಳಿವೆ - ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಮತ್ತು ಗೋಫರ್ಜೆಎಸ್. ಈ ಪರಿಹಾರಗಳ ಸ್ಥಿತಿ ಏನು ಮತ್ತು ಏನು ಮಾಡಬಹುದು ಎಂದು ನೋಡೋಣ.
ಮುಂಭಾಗದಲ್ಲಿ ಏನು ತಪ್ಪಾಗಿದೆ?
ಮುಂಭಾಗದಲ್ಲಿ ಎಲ್ಲವೂ ಚೆನ್ನಾಗಿದೆ ಎಂದು ಎಲ್ಲರೂ ಒಪ್ಪುತ್ತಾರೆಯೇ?
ಸಾಕಷ್ಟು ಪರೀಕ್ಷೆಗಳಿಲ್ಲವೇ? ನಿಧಾನ ನಿರ್ಮಾಣ? ಪರಿಸರ ವ್ಯವಸ್ಥೆ? ಫೈನ್.
ಮುಂಭಾಗಕ್ಕೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಮುಂಭಾಗದ ಡೆವಲಪರ್ಗಳಲ್ಲಿ ಒಬ್ಬರು ತಮ್ಮ ಪುಸ್ತಕದಲ್ಲಿ ಹೇಳಿದ ಉಲ್ಲೇಖವನ್ನು ನಾನು ಇಷ್ಟಪಡುತ್ತೇನೆ:
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಒಂದು ರೀತಿಯ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿಲ್ಲ. ಈಗ ನಾನು ನನ್ನ ಕೆಲಸದ ಸಮಯದಲ್ಲಿ ಎದುರಿಸಿದ ಸಮಸ್ಯೆಗಳನ್ನು ಹೆಸರಿಸುತ್ತೇನೆ ಮತ್ತು ಅವುಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತೇನೆ.
ಸಾಮಾನ್ಯವಾಗಿ ಟೈಪ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಜವಾಸ್ರಿಪ್ಟ್ನಲ್ಲಿ ಟೈಪ್ ಸಿಸ್ಟಮ್ ಎಂದು ಕರೆಯಲಾಗುವುದಿಲ್ಲ - ವಸ್ತುವಿನ ಪ್ರಕಾರವನ್ನು ಸೂಚಿಸುವ ಸಾಲುಗಳಿವೆ, ಆದರೆ ವಾಸ್ತವವಾಗಿ ಇದು ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಯಾವುದೇ ಸಂಬಂಧವನ್ನು ಹೊಂದಿಲ್ಲ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಟೈಪ್ಸ್ಕ್ರಿಪ್ಟ್ (ಜಾವಾಸ್ರಿಪ್ಟ್ಗೆ ಆಡ್-ಆನ್) ಮತ್ತು ಫ್ಲೋ (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಸ್ಥಿರ-ಮಾದರಿಯ ಪರೀಕ್ಷಕ) ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗಿದೆ. ವಾಸ್ತವವಾಗಿ, ಮುಂಭಾಗವು ಈಗಾಗಲೇ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಕೆಟ್ಟ ರೀತಿಯ ಸಿಸ್ಟಮ್ನ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಹಂತವನ್ನು ತಲುಪಿದೆ.
ಬ್ರೌಸರ್ನಲ್ಲಿ ಯಾವುದೇ ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿ ಇಲ್ಲ - ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಕೆಲವು ಅಂತರ್ನಿರ್ಮಿತ ವಸ್ತುಗಳು ಮತ್ತು “ಮ್ಯಾಜಿಕ್” ಕಾರ್ಯಗಳಿವೆ. ಆದರೆ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಯಾವುದೇ ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯವಿಲ್ಲ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಈಗಾಗಲೇ ಒಮ್ಮೆ jQuery ಮೂಲಕ ಪರಿಹರಿಸಲಾಗಿದೆ (ಪ್ರತಿಯೊಬ್ಬರೂ ಕೆಲಸ ಮಾಡಲು ಅಗತ್ಯವಿರುವ ಎಲ್ಲಾ ಮೂಲಮಾದರಿಗಳು, ಸಹಾಯಕರು, ಕಾರ್ಯಗಳೊಂದಿಗೆ jQuery ಅನ್ನು ಬಳಸಿದ್ದಾರೆ). ಈಗ ಎಲ್ಲರೂ ಲೋಡಾಶ್ ಅನ್ನು ಬಳಸುತ್ತಾರೆ:
ಕಾಲ್ಬ್ಯಾಕ್ ನರಕ. ಪ್ರತಿಯೊಬ್ಬರೂ ಸುಮಾರು 5 ವರ್ಷಗಳ ಹಿಂದೆ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ ಅನ್ನು ನೋಡಿದ್ದಾರೆ ಎಂದು ನಾನು ಭಾವಿಸುತ್ತೇನೆ ಮತ್ತು ಇದು ಕಾಲ್ಬ್ಯಾಕ್ಗಳ ನಂಬಲಾಗದ ಜಟಿಲತೆಯ "ನೂಡಲ್" ನಂತೆ ಕಾಣುತ್ತದೆ. ಈಗ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ (ES-15 ಅಥವಾ ES-16 ಬಿಡುಗಡೆಯೊಂದಿಗೆ), ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಭರವಸೆಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಮತ್ತು ಪ್ರತಿಯೊಬ್ಬರೂ ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಸುಲಭವಾಗಿ ಉಸಿರಾಡಬಹುದು.
ಪ್ರೋಮಿಸ್ ಹೆಲ್ ಬರುವವರೆಗೆ ... ಮುಂಭಾಗದ ಉದ್ಯಮವು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ, ಆದರೆ ಅವರು ಯಾವಾಗಲೂ ಕೆಲವು ವಿಚಿತ್ರ ಕಾಡಿನಲ್ಲಿ ತಮ್ಮನ್ನು ಓಡಿಸುತ್ತಾರೆ. ನಾವು ಭರವಸೆಗಳ ಮೇಲೆ ನರಕವನ್ನು ಸಹ ನಿರ್ವಹಿಸಿದ್ದೇವೆ. ನಂತರ ನಾವು ಹೊಸ ಪ್ರಾಚೀನವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಿದ್ದೇವೆ - ಅಸಿಂಕ್ / ನಿರೀಕ್ಷಿಸಿ:
ಅಸಿಂಕ್ರೊನಿ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ. Async/waiit ವಿವಿಧ ಭಾಷೆಗಳಲ್ಲಿ ಸಾಕಷ್ಟು ಜನಪ್ರಿಯವಾದ ಪ್ರಾಚೀನವಾಗಿದೆ. ಪೈಥಾನ್ ಮತ್ತು ಇತರರು ಈ ವಿಧಾನವನ್ನು ಹೊಂದಿದ್ದಾರೆ - ಇದು ತುಂಬಾ ಒಳ್ಳೆಯದು. ಸಮಸ್ಯೆ ಪರಿಹಾರವಾಯಿತು.
ಯಾವ ಸಮಸ್ಯೆ ಪರಿಹಾರವಾಗಿಲ್ಲ? ಚೌಕಟ್ಟುಗಳ ಘಾತೀಯವಾಗಿ ಹೆಚ್ಚುತ್ತಿರುವ ಸಂಕೀರ್ಣತೆ, ಪರಿಸರ ವ್ಯವಸ್ಥೆಯ ಸಂಕೀರ್ಣತೆ ಮತ್ತು ಕಾರ್ಯಕ್ರಮಗಳು.
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸಿಂಟ್ಯಾಕ್ಸ್ ಸ್ವಲ್ಪ ವಿಚಿತ್ರವಾಗಿದೆ. ಅರೇ ಮತ್ತು ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಇತರ ಜೋಕ್ಗಳನ್ನು ಸೇರಿಸುವಲ್ಲಿನ ಸಮಸ್ಯೆಗಳು ನಮಗೆಲ್ಲರಿಗೂ ತಿಳಿದಿದೆ.
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಬಹು ಮಾದರಿಯಾಗಿದೆ. ಪರಿಸರ ವ್ಯವಸ್ಥೆಯು ತುಂಬಾ ದೊಡ್ಡದಾದಾಗ ಇದು ವಿಶೇಷವಾಗಿ ಒತ್ತುವ ವ್ಯವಸ್ಥೆಯಾಗಿದೆ:
- ಪ್ರತಿಯೊಬ್ಬರೂ ವಿಭಿನ್ನ ಶೈಲಿಗಳಲ್ಲಿ ಬರೆಯುತ್ತಾರೆ - ಕೆಲವರು ರಚನಾತ್ಮಕವಾಗಿ ಬರೆಯುತ್ತಾರೆ, ಕೆಲವರು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಬರೆಯುತ್ತಾರೆ, ವಿಭಿನ್ನ ಅಭಿವರ್ಧಕರು ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಬರೆಯುತ್ತಾರೆ;
- ವಿಭಿನ್ನ ಪ್ಯಾಕೇಜುಗಳಿಂದ, ನೀವು ವಿಭಿನ್ನ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಬಳಸುವಾಗ ವಿಭಿನ್ನ ಮಾದರಿಗಳು;
- Javasript ನಲ್ಲಿ ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನೊಂದಿಗೆ ಸಾಕಷ್ಟು "ವಿನೋದ" ಇದೆ - rambda ಲೈಬ್ರರಿ ಕಾಣಿಸಿಕೊಂಡಿತು ಮತ್ತು ಈಗ ಈ ಲೈಬ್ರರಿಯಲ್ಲಿ ಬರೆದ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಯಾರೂ ಓದಲಾಗುವುದಿಲ್ಲ.
- ಇದೆಲ್ಲವೂ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯ ಮೇಲೆ ದೊಡ್ಡ ಪರಿಣಾಮವನ್ನು ಬೀರುತ್ತದೆ ಮತ್ತು ಇದು ನಂಬಲಾಗದಷ್ಟು ಬೆಳೆದಿದೆ. ಪ್ಯಾಕೇಜ್ಗಳು ಒಂದಕ್ಕೊಂದು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ: ಕೆಲವು ಭರವಸೆಗಳನ್ನು ಆಧರಿಸಿವೆ, ಕೆಲವು ಅಸಿಂಕ್/ನಿರೀಕ್ಷಣೆಯನ್ನು ಆಧರಿಸಿವೆ, ಕೆಲವು ಕಾಲ್ಬ್ಯಾಕ್ಗಳನ್ನು ಆಧರಿಸಿವೆ. ಅವರು ವಿವಿಧ ಮಾದರಿಗಳಲ್ಲಿ ಬರೆಯುತ್ತಾರೆ!
- ಇದರಿಂದ ಯೋಜನೆಯ ನಿರ್ವಹಣೆ ಕಷ್ಟವಾಗುತ್ತಿದೆ. ನೀವು ಕೋಡ್ ಅನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ ದೋಷವನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಕಷ್ಟ.
ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಎಂದರೇನು?
ಮೊಜಿಲ್ಲಾ ಫೌಂಡೇಶನ್ ಮತ್ತು ಹಲವಾರು ಇತರ ಕಂಪನಿಗಳ ಧೈರ್ಯಶಾಲಿ ವ್ಯಕ್ತಿಗಳು ವೆಬ್ ಅಸೆಂಬ್ಲಿಯಂತಹ ವಿಷಯದೊಂದಿಗೆ ಬಂದರು. ಇದು ಏನು?
- ಇದು ಬೈನರಿ ಸ್ವರೂಪವನ್ನು ಬೆಂಬಲಿಸುವ ಬ್ರೌಸರ್ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ವರ್ಚುವಲ್ ಯಂತ್ರವಾಗಿದೆ.
- ಬೈನರಿ ಪ್ರೋಗ್ರಾಂಗಳು ಅಲ್ಲಿಗೆ ಬರುತ್ತವೆ ಮತ್ತು ಬಹುತೇಕ ಸ್ಥಳೀಯವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲ್ಪಡುತ್ತವೆ, ಅಂದರೆ, ಬ್ರೌಸರ್ ಪ್ರತಿ ಬಾರಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ನ ಎಲ್ಲಾ "ನೂಡಲ್ಸ್" ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ.
- ಎಲ್ಲಾ ಬ್ರೌಸರ್ಗಳು ಬೆಂಬಲವನ್ನು ಘೋಷಿಸಿವೆ.
- ಇದು ಬೈಟ್ಕೋಡ್ ಆಗಿರುವುದರಿಂದ, ನೀವು ಯಾವುದೇ ಭಾಷೆಗೆ ಕಂಪೈಲರ್ ಅನ್ನು ಬರೆಯಬಹುದು.
- ನಾಲ್ಕು ಪ್ರಮುಖ ಬ್ರೌಸರ್ಗಳು ಈಗಾಗಲೇ ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಬೆಂಬಲದೊಂದಿಗೆ ರವಾನಿಸಲಾಗಿದೆ.
- ನಾವು ಶೀಘ್ರದಲ್ಲೇ Go ನಲ್ಲಿ ಸ್ಥಳೀಯ ಬೆಂಬಲವನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತಿದ್ದೇವೆ. ಈ ಹೊಸ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಈಗಾಗಲೇ ಸೇರಿಸಲಾಗಿದೆ: GOARCH=wasm GOOS=js (ಶೀಘ್ರದಲ್ಲೇ). ಇಲ್ಲಿಯವರೆಗೆ, ನಾನು ಅರ್ಥಮಾಡಿಕೊಂಡಂತೆ, ಇದು ಕ್ರಿಯಾತ್ಮಕವಾಗಿಲ್ಲ, ಆದರೆ ಅದು ಖಂಡಿತವಾಗಿಯೂ ಗೋದಲ್ಲಿ ಇರುತ್ತದೆ ಎಂಬ ಹೇಳಿಕೆ ಇದೆ.
ಈಗ ಏನು ಮಾಡಬೇಕು? ಗೋಫರ್ಜೆಎಸ್
ನಾವು ವೆಬ್ ಅಸೆಂಬ್ಲಿಗೆ ಬೆಂಬಲವನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೂ, GopherJS ನಂತಹ ಟ್ರಾನ್ಸ್ಪೈಲರ್ ಇದೆ.
- ಗೋ ಕೋಡ್ ಅನ್ನು "ಶುದ್ಧ" ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗೆ ವರ್ಗಾಯಿಸಲಾಗಿದೆ.
- ಎಲ್ಲಾ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ರನ್ ಆಗುತ್ತದೆ - ಆಧುನಿಕ ಬ್ರೌಸರ್ಗಳಿಂದ ಮಾತ್ರ ಬೆಂಬಲಿಸುವ ಯಾವುದೇ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳಿಲ್ಲ (ಇದು ವೆನಿಲ್ಲಾ JS, ಇದು ಯಾವುದಾದರೂ ಚಲಿಸುತ್ತದೆ).
- ಗೊರೌಟಿನ್ಗಳು ಮತ್ತು ಚಾನಲ್ಗಳು ಸೇರಿದಂತೆ Go ಹೊಂದಿರುವ ಬಹುತೇಕ ಎಲ್ಲದಕ್ಕೂ ಬೆಂಬಲವಿದೆ... ನಾವು ತುಂಬಾ ಪ್ರೀತಿಸುವ ಮತ್ತು ತಿಳಿದಿರುವ ಎಲ್ಲವೂ.
- ಬ್ರೌಸರ್ನಲ್ಲಿ ಬೆಂಬಲಿಸಲು ಯಾವುದೇ ಅರ್ಥವಿಲ್ಲದ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಬಹುತೇಕ ಸಂಪೂರ್ಣ ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿಯನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ: syscal, ನೆಟ್ ಸಂವಹನಗಳು (ನೆಟ್/http ಕ್ಲೈಂಟ್ ಇದೆ, ಆದರೆ ಯಾವುದೇ ಸರ್ವರ್ ಇಲ್ಲ, ಮತ್ತು ಕ್ಲೈಂಟ್ ಅನ್ನು XMLHttpRequest ಮೂಲಕ ಅನುಕರಿಸಲಾಗುತ್ತದೆ). ಸಾಮಾನ್ಯವಾಗಿ, ಸಂಪೂರ್ಣ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ ಲಭ್ಯವಿದೆ - ಇಲ್ಲಿ ಅದು ಬ್ರೌಸರ್ನಲ್ಲಿದೆ, ನಾವು ಇಷ್ಟಪಡುವ Go's stdlib ಇಲ್ಲಿದೆ.
- Go ನಲ್ಲಿನ ಸಂಪೂರ್ಣ ಪ್ಯಾಕೇಜ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆ, ಎಲ್ಲಾ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಪರಿಹಾರಗಳನ್ನು (ಟೆಂಪ್ಲೇಟಿಂಗ್, ಇತ್ಯಾದಿ) GopherJS ಬಳಸಿ ಸಂಕಲಿಸಬಹುದು ಮತ್ತು ಬ್ರೌಸರ್ನಲ್ಲಿ ರನ್ ಮಾಡಬಹುದು.
GopherJS ಪಡೆಯುವುದು ತುಂಬಾ ಸುಲಭ - ಇದು ಕೇವಲ ಸಾಮಾನ್ಯ ಗೋ ಪ್ಯಾಕೇಜ್ ಆಗಿದೆ. ನಾವು ಪಡೆಯಲು ಹೋಗುತ್ತೇವೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ನಾವು GopherJS ಆಜ್ಞೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ:
ಇದೊಂದು ಚಿಕ್ಕ ಹಲೋ ವರ್ಲ್ಡ್...
...ಒಂದು ನಿಯಮಿತ Go ಪ್ರೋಗ್ರಾಂ, ಸಾಮಾನ್ಯ ಪ್ರಮಾಣಿತ ಲೈಬ್ರರಿ fmt ಪ್ಯಾಕೇಜ್ ಮತ್ತು ಬ್ರೌಸರ್ API ಅನ್ನು ತಲುಪಲು ಬೈಂಡಿಂಗ್ Js. Println ಅನ್ನು ಅಂತಿಮವಾಗಿ ಕನ್ಸೋಲ್ ಲಾಗ್ಗೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಬ್ರೌಸರ್ "ಹಲೋ ಗೋಫರ್ಸ್" ಎಂದು ಬರೆಯುತ್ತದೆ! ಇದು ತುಂಬಾ ಸರಳವಾಗಿದೆ: ನಾವು GopherJS ಅನ್ನು ನಿರ್ಮಿಸುತ್ತೇವೆ - ನಾವು ಅದನ್ನು ಬ್ರೌಸರ್ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ - ಎಲ್ಲವೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ!
ಈ ಸಮಯದಲ್ಲಿ ನಿಮ್ಮ ಬಳಿ ಏನಿದೆ? ಬೈಂಡಿಂಗ್ಸ್
ಎಲ್ಲಾ ಜನಪ್ರಿಯ js ಫ್ರೇಮ್ವರ್ಕ್ಗಳಿಗೆ ಬೈಂಡಿಂಗ್ಗಳಿವೆ:
- JQuery;
- Angular.js;
- ದೊಡ್ಡ ಡೇಟಾದೊಂದಿಗೆ ಸಂಚು ರೂಪಿಸಲು ಮತ್ತು ಕೆಲಸ ಮಾಡಲು D3.js;
- React.js;
- VueJS;
- ಎಲೆಕ್ಟ್ರಾನ್ಗೆ ಸಹ ಬೆಂಬಲವಿದೆ (ಅಂದರೆ, ನಾವು ಈಗಾಗಲೇ ಎಲೆಕ್ಟ್ರಾನ್ನಲ್ಲಿ ಡೆಸ್ಕ್ಟಾಪ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬರೆಯಬಹುದು);
- ಮತ್ತು ತಮಾಷೆಯ ವಿಷಯವೆಂದರೆ WebGL (ನಾವು 3D ಗ್ರಾಫಿಕ್ಸ್, ಸಂಗೀತ ಮತ್ತು ಎಲ್ಲಾ ಗುಡಿಗಳೊಂದಿಗೆ ಆಟಗಳು ಸೇರಿದಂತೆ ಪೂರ್ಣ-ಗ್ರಾಫಿಕ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಮಾಡಬಹುದು);
- ಮತ್ತು ಎಲ್ಲಾ ಜನಪ್ರಿಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳಿಗೆ ಅನೇಕ ಇತರ ಬೈಂಡಿಂಗ್ಗಳು.
ಫ್ರೇಮ್ವರ್ಕ್
- GopherJS - Vecty ಗಾಗಿ ಈಗಾಗಲೇ ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ವಿಶೇಷವಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ಇದು React.js ನ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಅನಲಾಗ್ ಆಗಿದೆ, ಆದರೆ GopherJS ನ ವಿಶೇಷತೆಗಳೊಂದಿಗೆ Go ನಲ್ಲಿ ಮಾತ್ರ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ.
- ಆಟದ ಚೀಲಗಳು ಇವೆ (ಆಶ್ಚರ್ಯ!). ನಾನು ಎರಡು ಹೆಚ್ಚು ಜನಪ್ರಿಯತೆಯನ್ನು ಕಂಡುಕೊಂಡಿದ್ದೇನೆ:
- ಎಂಗೊ;
- ಎಬಿಟೆನ್.
ಅದು ಹೇಗೆ ಕಾಣುತ್ತದೆ ಮತ್ತು ನೀವು ಈಗಾಗಲೇ Go ನಲ್ಲಿ ಏನು ಬರೆಯಬಹುದು ಎಂಬುದಕ್ಕೆ ನಾನು ನಿಮಗೆ ಒಂದೆರಡು ಉದಾಹರಣೆಗಳನ್ನು ತೋರಿಸುತ್ತೇನೆ:
ಅಥವಾ ಈ ಆಯ್ಕೆ (ನಾನು 3D ಶೂಟರ್ ಅನ್ನು ಹುಡುಕಲಾಗಲಿಲ್ಲ, ಆದರೆ ಬಹುಶಃ ಅದು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ):
ನಾನು ಏನು ನೀಡುತ್ತಿದ್ದೇನೆ?
ಈಗ ಮುಂಭಾಗದ ಉದ್ಯಮವು ಅಂತಹ ಸ್ಥಿತಿಯಲ್ಲಿದೆ, ಈ ಹಿಂದೆ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಕೂಗಿದ ಎಲ್ಲಾ ಭಾಷೆಗಳು ಅಲ್ಲಿಗೆ ಧಾವಿಸುತ್ತವೆ. ಈಗ ಎಲ್ಲವನ್ನೂ "ವೆಬ್ ಅಸೆಂಬ್ಲೀಸ್" ಆಗಿ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ. ಗೋಫರ್ಸ್ ಆಗಿ ನಾವು ನಮ್ಮ ಸರಿಯಾದ ಸ್ಥಾನವನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಏನು ಬೇಕು?
ಗೋ ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ ಇದು ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ ಎಂದು ಊಹಿಸಲಾಗಿದೆ ಮತ್ತು UI ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾಯೋಗಿಕವಾಗಿ ಯಾವುದೇ ಲೈಬ್ರರಿಗಳಿಲ್ಲ. ಏನಾದರೂ ಇದೆ, ಆದರೆ ಅದು ಅರ್ಧದಷ್ಟು ಕೈಬಿಡಲ್ಪಟ್ಟಿದೆ, ಅರ್ಧದಷ್ಟು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ.
ಮತ್ತು ಈಗ GopherJS ನಲ್ಲಿ ರನ್ ಆಗುವ UI ಲೈಬ್ರರಿಗಳನ್ನು Go ನಲ್ಲಿ ಮಾಡಲು ಉತ್ತಮ ಅವಕಾಶ! ನೀವು ಅಂತಿಮವಾಗಿ ನಿಮ್ಮ ಸ್ವಂತ ಚೌಕಟ್ಟನ್ನು ಬರೆಯಬಹುದು! ನೀವು ಚೌಕಟ್ಟನ್ನು ಬರೆಯಬಹುದಾದ ಸಮಯ ಇದು, ಮತ್ತು ಇದು ಮೊದಲನೆಯದು ಮತ್ತು ಆರಂಭಿಕ ದತ್ತು ಪಡೆಯುವುದು ಮತ್ತು ನೀವು ನಕ್ಷತ್ರವಾಗಿರುತ್ತೀರಿ (ಅದು ಉತ್ತಮ ಚೌಕಟ್ಟಾಗಿದ್ದರೆ).
ಬ್ರೌಸರ್ನ ವಿಶೇಷತೆಗಳಿಗೆ (ಉದಾಹರಣೆಗೆ, ಟೆಂಪ್ಲೇಟ್ ಎಂಜಿನ್) ಗೋ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಈಗಾಗಲೇ ಇರುವ ಹಲವಾರು ವಿಭಿನ್ನ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ನೀವು ಅಳವಡಿಸಿಕೊಳ್ಳಬಹುದು. ಅವರು ಈಗಾಗಲೇ ಕೆಲಸ ಮಾಡುತ್ತಾರೆ, ನೀವು ಅನುಕೂಲಕರ ಬೈಂಡಿಂಗ್ಗಳನ್ನು ಮಾಡಬಹುದು ಇದರಿಂದ ನೀವು ನೇರವಾಗಿ ಬ್ರೌಸರ್ನಲ್ಲಿ ವಿಷಯವನ್ನು ಸುಲಭವಾಗಿ ನಿರೂಪಿಸಬಹುದು. ಜೊತೆಗೆ, ನೀವು, ಉದಾಹರಣೆಗೆ, ಸರ್ವರ್ನಲ್ಲಿ ಮತ್ತು ಫ್ರಂಟ್-ಎಂಡ್ನಲ್ಲಿ ಒಂದೇ ಕೋಡ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಒಂದೇ ವಿಷಯವನ್ನು ಸಲ್ಲಿಸಬಹುದಾದ ಸೇವೆಯನ್ನು ಮಾಡಬಹುದು - ಫ್ರಂಟ್-ಎಂಡ್ ಡೆವಲಪರ್ಗಳು ಇಷ್ಟಪಡುವ ಎಲ್ಲವನ್ನೂ (ಈಗ ಗೋದಲ್ಲಿ ಮಾತ್ರ).
ನೀವು ಆಟವನ್ನು ಬರೆಯಬಹುದು! ತಮಾಷೆಗಾಗಿ…
ನಾನು ಹೇಳಲು ಬಯಸಿದ್ದು ಇಷ್ಟೇ.
ಪ್ರಶ್ನೆಗಳು
ಪ್ರಶ್ನೆ (ಇನ್ನು ಮುಂದೆ Q ಎಂದು ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ): - ನಾನು Go ಅಥವಾ Js ನಲ್ಲಿ ಬರೆಯುತ್ತೇನೆಯೇ?
AG: - ನೀವು ದಿನಚರಿಗಳು, ಚಾನಲ್ಗಳು, ರಚನೆಗಳು, ಎಂಬೆಡಿಂಗ್ - ಎಲ್ಲವೂ Go ನಲ್ಲಿ ಬರೆಯಿರಿ... ನೀವು ಈವೆಂಟ್ಗೆ ಚಂದಾದಾರರಾಗಿ, ಅಲ್ಲಿ ಒಂದು ಕಾರ್ಯವನ್ನು ಪಾಸ್ ಮಾಡಿ.
ಇನ್: - ಹಾಗಾಗಿ ನಾನು "ಬೆತ್ತಲೆ" Js ನಲ್ಲಿ ಬರೆಯುತ್ತೇನೆ?
AG: - ಇಲ್ಲ, ನೀವು Go ನಲ್ಲಿರುವಂತೆ ಬರೆಯುತ್ತೀರಿ ಮತ್ತು ಬ್ರೌಸರ್ API ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ (API ಬದಲಾಗಿಲ್ಲ). ನಿಮ್ಮ ಸ್ವಂತ ಬೈಂಡಿಂಗ್ಗಳನ್ನು ನೀವು ಬರೆಯಬಹುದು ಇದರಿಂದ ಸಂದೇಶಗಳನ್ನು ಚಾನಲ್ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ - ಇದು ಕಷ್ಟವೇನಲ್ಲ.
ಇನ್: - ಮೊಬೈಲ್ ಬಗ್ಗೆ ಏನು?
AG: - ನಾನು ಖಂಡಿತವಾಗಿಯೂ ನೋಡಿದೆ: Js ರನ್ ಮಾಡುವ ಕಾರ್ಡೋವಾ ಪ್ಯಾಚ್ಗೆ ಬೈಂಡಿಂಗ್ಗಳಿವೆ. ರಿಯಾಕ್ಟ್ ನೇಟಿವ್ ನಲ್ಲಿ - ನನಗೆ ಗೊತ್ತಿಲ್ಲ; ಬಹುಶಃ ಇರಬಹುದು, ಬಹುಶಃ ಇಲ್ಲ (ನನಗೆ ವಿಶೇಷವಾಗಿ ಆಸಕ್ತಿ ಇರಲಿಲ್ಲ). N-go ಗೇಮ್ ಎಂಜಿನ್ ಎರಡೂ ಮೊಬೈಲ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ - iOS ಮತ್ತು Android ಎರಡೂ.
ಇನ್: - ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಬಗ್ಗೆ ಪ್ರಶ್ನೆ. ಸಂಕೋಚನ ಮತ್ತು "ಜಿಪ್ಪಿಂಗ್" ಹೊರತಾಗಿಯೂ ಹೆಚ್ಚು ಹೆಚ್ಚು ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ ... ನಾವು ಮುಂಭಾಗದ ಜಗತ್ತನ್ನು ಈ ರೀತಿಯಲ್ಲಿ ಇನ್ನಷ್ಟು ಕೊಲ್ಲುವುದಿಲ್ಲವೇ?
AG: – ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಒಂದು ಬೈನರಿ ಫಾರ್ಮ್ಯಾಟ್ ಆಗಿದೆ, ಮತ್ತು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಬೈನರಿ ಪಠ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ಅಂತಿಮ ಬಿಡುಗಡೆಯಲ್ಲಿ ಇರುವಂತಿಲ್ಲ... ನೀವು ರನ್ಟೈಮ್ಗೆ ಸೆಳೆಯಲ್ಪಟ್ಟಿದ್ದೀರಿ, ಆದರೆ ಇದು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಲೈಬ್ರರಿ ಇಲ್ಲದಿದ್ದಾಗ ಅದನ್ನು ಎಳೆಯುವಂತೆಯೇ ಇರುತ್ತದೆ, ಆದ್ದರಿಂದ ನಾವು ಕೆಲವು ಲೋಡಾಶ್ ಬಳಸಿ. ಲೋಡಾಶ್ ಎಷ್ಟು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಎಂದು ನನಗೆ ತಿಳಿದಿಲ್ಲ.
ಇನ್: - ರನ್ಟೈಮ್ಗಿಂತ ನಿಸ್ಸಂಶಯವಾಗಿ ಕಡಿಮೆ...
AG: - "ಶುದ್ಧ" ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ?
ಇನ್: - ಹೌದು. ಕಳುಹಿಸುವ ಮೊದಲು ನಾವು ಅದನ್ನು ಕುಗ್ಗಿಸುತ್ತೇವೆ...
AG: - ಆದರೆ ಇದು ಪಠ್ಯವಾಗಿದೆ ... ಸಾಮಾನ್ಯವಾಗಿ, ಮೆಗಾಬೈಟ್ ಬಹಳಷ್ಟು ತೋರುತ್ತದೆ, ಆದರೆ ಅದು ಅಷ್ಟೆ (ನೀವು ಸಂಪೂರ್ಣ ರನ್ಟೈಮ್ ಅನ್ನು ಹೊಂದಿದ್ದೀರಿ). ಮುಂದೆ, ನಿಮ್ಮ ಸ್ವಂತ ವ್ಯವಹಾರ ತರ್ಕವನ್ನು ನೀವು ಬರೆಯುತ್ತೀರಿ, ಅದು ನಿಮ್ಮ ಬೈನರಿಯನ್ನು 1% ರಷ್ಟು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಇಲ್ಲಿಯವರೆಗೆ ಇದು ಮುಂಭಾಗವನ್ನು ಕೊಲ್ಲುವುದನ್ನು ನಾನು ನೋಡಿಲ್ಲ. ಇದಲ್ಲದೆ, ಸ್ಪಷ್ಟ ಕಾರಣಕ್ಕಾಗಿ ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗಿಂತ ವೇಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ - ಅದನ್ನು ಪಾರ್ಸ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ.
ಇನ್: - ಇದು ಇನ್ನೂ ವಿವಾದಾತ್ಮಕ ಅಂಶವಾಗಿದೆ... "ವಾಸ್ಮಾ" (ವೆಬ್ ಅಸೆಂಬ್ಲಿ) ನ ಯಾವುದೇ ಉಲ್ಲೇಖದ ಅನುಷ್ಠಾನ ಇನ್ನೂ ಇಲ್ಲ, ಇದರಿಂದ ಒಬ್ಬರು ನಿಸ್ಸಂದಿಗ್ಧವಾಗಿ ನಿರ್ಣಯಿಸಬಹುದು. ಕಲ್ಪನಾತ್ಮಕವಾಗಿ, ಹೌದು: ಬೈನರಿ ವೇಗವಾಗಿರಬೇಕು ಎಂದು ನಾವೆಲ್ಲರೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ, ಆದರೆ ಅದೇ V8 ನ ಪ್ರಸ್ತುತ ಅನುಷ್ಠಾನವು ತುಂಬಾ ಪರಿಣಾಮಕಾರಿಯಾಗಿದೆ.
AG: - ಹೌದು.
ಇನ್: - ಅಲ್ಲಿ ಸಂಕಲನವು ನಿಜವಾಗಿಯೂ ತುಂಬಾ ತಂಪಾಗಿದೆ ಮತ್ತು ಇದು ದೊಡ್ಡ ಪ್ರಯೋಜನವನ್ನು ಹೊಂದಿರುತ್ತದೆ ಎಂಬುದು ಸತ್ಯವಲ್ಲ.
AG: – ವೆಬ್ ಅಸೆಂಬ್ಲಿ ಕೂಡ ದೊಡ್ಡ ವ್ಯಕ್ತಿಗಳಿಂದ ಮಾಡಲ್ಪಟ್ಟಿದೆ.
ಇನ್: - ವೆಬ್ ಅಸೆಂಬ್ಲಿಯನ್ನು ನಿರ್ಣಯಿಸುವುದು ಇನ್ನೂ ಕಷ್ಟ ಎಂದು ನನಗೆ ತೋರುತ್ತದೆ. ಈಗ ಹಲವು ವರ್ಷಗಳಿಂದ ಸಂಭಾಷಣೆಗಳು ನಡೆಯುತ್ತಿವೆ, ಆದರೆ ಕೆಲವು ನೈಜ ಸಾಧನೆಗಳನ್ನು ಅನುಭವಿಸಬಹುದು.
AG: - ಇರಬಹುದು. ಸರಿ ನೊಡೋಣ.
ಇನ್: - ನಮಗೆ ಬ್ಯಾಕೆಂಡ್ನಲ್ಲಿ ಸಮಸ್ಯೆಗಳಿಲ್ಲ... ಬಹುಶಃ ನಾವು ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಮುಂಭಾಗದಲ್ಲಿ ಬಿಡಬೇಕೇ? ಅಲ್ಲಿಗೆ ಏಕೆ ಹೋಗಬೇಕು?
AG: - ನಾವು ಮುಂಚೂಣಿಯ ಕೆಲಸಗಾರರ ಸಿಬ್ಬಂದಿಯನ್ನು ಇರಿಸಿಕೊಳ್ಳಬೇಕು.
ಕೆಲವು ಜಾಹೀರಾತುಗಳು 🙂
ನಮ್ಮೊಂದಿಗೆ ಇರುವುದಕ್ಕೆ ಧನ್ಯವಾದಗಳು. ನೀವು ನಮ್ಮ ಲೇಖನಗಳನ್ನು ಇಷ್ಟಪಡುತ್ತೀರಾ? ಹೆಚ್ಚು ಆಸಕ್ತಿದಾಯಕ ವಿಷಯವನ್ನು ನೋಡಲು ಬಯಸುವಿರಾ? ಆರ್ಡರ್ ಮಾಡುವ ಮೂಲಕ ಅಥವಾ ಸ್ನೇಹಿತರಿಗೆ ಶಿಫಾರಸು ಮಾಡುವ ಮೂಲಕ ನಮ್ಮನ್ನು ಬೆಂಬಲಿಸಿ,
ಆಮ್ಸ್ಟರ್ಡ್ಯಾಮ್ನಲ್ಲಿರುವ Equinix Tier IV ಡೇಟಾ ಸೆಂಟರ್ನಲ್ಲಿ Dell R730xd 2x ಅಗ್ಗವಾಗಿದೆಯೇ? ಇಲ್ಲಿ ಮಾತ್ರ
ಮೂಲ: www.habr.com