자바스크립트 언어 자체부터 프로젝트 실습에 대해 이야기하기_javascript 스킬
从javascript语言本身谈项目实战
dulao5 2005-1-15
随着ajax的升温,javascript越来越得到人们的重视。重要的是,ajax在一定程度上带来了web软件架构上的变化,人们把越来越多的功能分配到客户端实现,javascript子项目规模越来越大。如何更高效的使用javascript,如何更科学的组织javascript,如何更顺利的保证项目进展?我想就我的经验谈一点浅见。
一。 开发人员需要认真学习javascript语言本身
由于javascript是“世界上最被误解的语言”, 大部分人对javascript语法并没有全面了解过,只是凭借看起来很像c或者java的关键字按照自己的理解写javascript代码。其实 javascript是一种很独特的语言,和c++/java有非常大的区别,要想用javascript做大一些的项目,开发人员必须老老实实的学习 javascript的语法。真正掌握了语法后,我们才不会把delete看成释放内存对象,才不会为到底参数传递是值传递还是引用传递而烦恼。真正理解了javascript的基于原型的OO方式,才可能写出具有良好架构的javascript程序。
《javascript权威指南》是一本最合适的书,郑重推荐。另外ECMA262 文档可以作为参考。网上流行的jscript手册chm版本使用起来比较方便,不过这是微软的jscript实现,和标准的javascript略有区别,使用时应该注意上面的注脚信息。关于javascript的原型和OO,网上已经有很多文章介绍了,在此不再多说。
二。 良好的代码来源于良好的设计
只有设计优良,代码才会写的漂亮。现在的javascript子项目已经不是以前web项目中的“边角料”和散兵游勇了,在较大的ajax项目内, javascript将非常复杂,ajax的异步模型也和以前顺序执行的程序设计有所区别。所以建议做javascript前首先做好设计。推荐使用用例驱动的方式,把用例分析清楚,以便全局考虑所有可能的页面交互过程,绘出页面内一些对象之间的交互图,分析一些数据对象的状态,作出精细的 javascript设计。
三。 使用设计模式,复用其他领域的设计经验
如果javascript非常复杂,可以考虑使用一些模式。我想大部分做javascript的开发者都不是“javascript科班”出身吧:) 掌握了javascript的语言本质,就可以复用我们在其他领域的经验了。使用javascript框架或者ajax框架,使用单例模式做一个全局的数据缓冲池,或者使用观察者模式把界面对象和数据对象分离,使用命令模式实现用户的操作队列等等。
四。 调试代码的技巧
javascript的代码不太好调试,这是由于:
- 一般的开发人员对javascript语言本身不太精通。也就是上面提到的。
- web项目包含较多的因素,复杂性加剧。服务端脚本、模板、html、js等很多环节都可能增加调试难度。
- 浏览器存在兼容性问题。有可能在一个细节问题上IE、Mozilla、opera等浏览器都有差异。
- 工具的缺乏。虽然mozilla的jsdebugger非常好用(还有bug,比如eval时调试器有些问题),但是其他浏览器环境下调试工具就不怎么样了。ms系统自带的script debug工具调试本地代码还可以,直接调试网站js代码表现欠佳。opera除了javascript控制台外我没有找到其他调试工具。
在此我推荐几个调试技巧:
- Mozilla Firefox용 jsdebugger 플러그인을 사용하세요 . 이에 대해서는 더 이상 말하지 않겠습니다. 가장 고전적인 js 디버깅 도구입니다. 원격 사이트 JavaScript의 온라인 디버깅은 훌륭합니다.
- 문제를 파악하고, 로컬 html 파일과 js 파일을 생성하고, ms 스크립트 디버그 디버깅 도구를 사용하여 디버깅합니다. js 모듈이 상대적으로 독립적인 경우 이 도구를 사용할 수 있습니다. hta 프로젝트를 작성하는 경우 당연히 이 도구가 첫 번째 선택입니다.
- httpWatch 이것은 IE용 플러그인으로, IE의 모든 http 세션을 모니터링하고 http 세션의 원본 텍스트를 볼 수 있습니다. 이 도구를 사용하여 프로그램에 서버 세션이 있는지 여부와 매개변수 및 반환된 데이터가 무엇인지 확인할 수 있습니다.
-
웹페이지에서 디버깅을 위한 텍스트 영역 생성
웹페이지에서 실행하려는 js 문을 허용하는 텍스트 영역을 생성한 다음 js의 평가 기능을 사용하기 위한 버튼을 추가할 수 있습니다. 입력한 코드를 실행합니다.
이 방법은 웹 페이지에서 오류가 발생한 후 페이지에 개체 값을 출력하는 코드를 작성하는 데 매우 적합합니다. 더 나은 결과를 위해 함께 사용할 일부 덤프 도구 기능을 작성하는 것이 좋습니다.
이 방법은 언제든지 페이지의 숨겨진 텍스트 영역을 열어서 디버깅할 수 있다는 점에서 매우 마음에 듭니다. 마치 터미널을 서버에 연결한 다음 셸을 사용하여 무엇이든 하는 것과 같은 느낌입니다. 여기에서 재정의할 수 있으므로 인터페이스의 모든 요소를 임의로 조작하고, 모든 개체의 모든 기능을 호출하고, 필요한 런타임 값을 출력할 수 있습니다.
-
예외 및 어설션 사용
try{}catch(e){} 구조를 사용하면 오류 메시지를 숨길 수 있을 뿐만 아니라 인터페이스를 더욱 친숙하게 만들 수 있습니다. 우리 프로그램은 더 나은 오류 처리 메커니즘을 구축하기 위해 예외를 사용하고 예외를 발생시킬 수 있습니다.
그런 이야기가 있습니다. string.localeCompare 함수를 사용할 때 다음 코드를 무심코 작성했습니다.
var iRe = str1.localeCompare(str2);
switch(iRe){
0: return . ...
1: return ....
-1:return ....
defalut:throw "error:localeCompare return other value"
}
작성 후 잊어버림 예기치 않게 내 동료가 Linux에서 Firefox를 사용할 때 예외가 발생했습니다. 그런 다음 Linux Firefox의 localeCompare가 0/1/-1뿐만 아니라 특정 값을 반환한다는 것을 알게 되었습니다.
이 예외 발생은 코드의 불완전성을 효과적으로 감지합니다. .
firefox에서 예외 덤프를 수행한 후 더 자세한 호출 스택 정보를 얻을 수 있어 매우 좋습니다. IE의 예외 정보는 그다지 자세하지 않습니다.
예외와 어설션을 매우 효과적인 디버깅 도구로 결합할 수도 있습니다.
어설션(assert)은 다른 언어에서 매우 효과적인 디버깅 도구입니다.
assert();
프로그램이 디버그 상태에 있을 때, 조건이 충족될 때 false인 경우 시스템은 이 주장을 중단하고 보고합니다. Assertion은 스스로 정의하기 때문에 어디에서 오류가 발생했는지 쉽게 파악하고 버그를 찾을 수 있습니다.
JavaScript 언어는 매크로도 제공하지도 않고 Assert도 제공하지 않습니다.
if(_is_debug)ert = function(expression, strLable){
if(!expression) throw Error( strLable);
}
else 주장 = function(){};//_is_debug는 전역 변수입니다
이를 통해 프로그램은 "불가능한 일"이 발생할 때 디버그 모드에서 예외를 발생시킨 후 해제할 수 있습니다. 버전에서는 무시하세요.
IE의 예외 객체에 방금 언급한 스택 정보가 없다는 단점을 보완하기 위해 현재 스택의 호출 정보를 이와 같이 출력할 수 있습니다.
함수 callStackInfo( ){
var s="",line="";
var cer=arguments.callee.caller;
while(cer){
var sf=cer. toString();
s =line sf.substring(sf.indexOf('function'),sf.indexOf('{')) "n";
line=".." line;
cer=cer.caller;
}
return s;
}
이 기사에서는 웹 개발, 특히 Ajax 개발에서 JavaScript 사용에 대해서만 설명하며 주로 "순수한 JavaScript"를 더 잘 사용하는 방법에 중점을 둡니다. 웹 개발에는 xml, Dom 등 실제로 자바스크립트와 밀접한 관련이 있는 부분이 많이 있지만, 이 글에서는 다루지 않기 때문에 양해해 주시기 바랍니다. 친구들은 내 토론에 대해 더 많은 의견을 제공할 수 있습니다.
--
-------------------------------------------- ------ -----------
진심으로 dulao5

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

각각의 엔진의 구현 원리 및 최적화 전략이 다르기 때문에 JavaScript 엔진은 JavaScript 코드를 구문 분석하고 실행할 때 다른 영향을 미칩니다. 1. 어휘 분석 : 소스 코드를 어휘 단위로 변환합니다. 2. 문법 분석 : 추상 구문 트리를 생성합니다. 3. 최적화 및 컴파일 : JIT 컴파일러를 통해 기계 코드를 생성합니다. 4. 실행 : 기계 코드를 실행하십시오. V8 엔진은 즉각적인 컴파일 및 숨겨진 클래스를 통해 최적화하여 Spidermonkey는 유형 추론 시스템을 사용하여 동일한 코드에서 성능이 다른 성능을 제공합니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

C/C에서 JavaScript로 전환하려면 동적 타이핑, 쓰레기 수집 및 비동기 프로그래밍으로 적응해야합니다. 1) C/C는 수동 메모리 관리가 필요한 정적으로 입력 한 언어이며 JavaScript는 동적으로 입력하고 쓰레기 수집이 자동으로 처리됩니다. 2) C/C를 기계 코드로 컴파일 해야하는 반면 JavaScript는 해석 된 언어입니다. 3) JavaScript는 폐쇄, 프로토 타입 체인 및 약속과 같은 개념을 소개하여 유연성과 비동기 프로그래밍 기능을 향상시킵니다.

웹 개발에서 JavaScript의 주요 용도에는 클라이언트 상호 작용, 양식 검증 및 비동기 통신이 포함됩니다. 1) DOM 운영을 통한 동적 컨텐츠 업데이트 및 사용자 상호 작용; 2) 사용자가 사용자 경험을 향상시키기 위해 데이터를 제출하기 전에 클라이언트 확인이 수행됩니다. 3) 서버와의 진실한 통신은 Ajax 기술을 통해 달성됩니다.

실제 세계에서 JavaScript의 응용 프로그램에는 프론트 엔드 및 백엔드 개발이 포함됩니다. 1) DOM 운영 및 이벤트 처리와 관련된 TODO 목록 응용 프로그램을 구축하여 프론트 엔드 애플리케이션을 표시합니다. 2) Node.js를 통해 RESTFULAPI를 구축하고 Express를 통해 백엔드 응용 프로그램을 시연하십시오.

보다 효율적인 코드를 작성하고 성능 병목 현상 및 최적화 전략을 이해하는 데 도움이되기 때문에 JavaScript 엔진이 내부적으로 작동하는 방식을 이해하는 것은 개발자에게 중요합니다. 1) 엔진의 워크 플로에는 구문 분석, 컴파일 및 실행; 2) 실행 프로세스 중에 엔진은 인라인 캐시 및 숨겨진 클래스와 같은 동적 최적화를 수행합니다. 3) 모범 사례에는 글로벌 변수를 피하고 루프 최적화, Const 및 Lets 사용 및 과도한 폐쇄 사용을 피하는 것이 포함됩니다.

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

개발 환경에서 Python과 JavaScript의 선택이 모두 중요합니다. 1) Python의 개발 환경에는 Pycharm, Jupyternotebook 및 Anaconda가 포함되어 있으며 데이터 과학 및 빠른 프로토 타이핑에 적합합니다. 2) JavaScript의 개발 환경에는 Node.js, VScode 및 Webpack이 포함되어 있으며 프론트 엔드 및 백엔드 개발에 적합합니다. 프로젝트 요구에 따라 올바른 도구를 선택하면 개발 효율성과 프로젝트 성공률이 향상 될 수 있습니다.
