2009-02-02 4 views
38

그래서 나는 JavaScript를 정리하고 테스트하는 여러 가지 방법을 모색하고 있습니다. 나는 다른 언어와 마찬가지로 좋은 방법을 얻는 한 가지 방법을 생각했다. 좋은 코드를 읽는 것이다. jQuery는 매우 대중적이므로 어느 정도의 훌륭한 코딩이 있어야합니다. jQuery가 유효성 검사에 실패하면 JSLint의 장점은 무엇입니까

그래서 JSLint의 검증을 통해 jQuery를 실행할 때 그것은 나에게이 메시지를주는 이유 :

Error:

Problem at line 18 character 5: Expected an identifier and instead saw 'undefined' (a reserved word).

undefined,

Problem at line 24 character 27: Missing semicolon.

jQuery = window.jQuery = window.$ = function(selector, context) {

Problem at line 24 character 28: Expected an identifier and instead saw '='.

jQuery = window.jQuery = window.$ = function(selector, context) {

Problem at line 24 character 28: Stopping, unable to continue. (0% scanned).

JSLintjquery-1.3.1.js를 사용하여 수행되었다

+10

jQuery는 모범이 아닙니다. 자바 스크립트 – singpolyma

+2

jQuery는 jsLint를 사용합니다. http://docs.jquery.com/JQuery_Core_Style_Guidelines –

답변

104

JSLint 무슨 일이 수에 관한 하나의 특정 사람의 (더글러스 크록 포드)의 의견을 테스트 좋은 자바 스크립트 코드. Crockford는 매우 훌륭하지만, 그의 의견 중 일부는 밑줄 규칙이나 증가/감소 연산자의 사용과 같이 기껏해야 항문 보유력이 있습니다.

위 출력에서 ​​JSLint로 태그 지정되는 문제 중 상당수는 Crockford가 코드 유지 관리가 어려워지는 것으로 느껴지거나 과거에 '영리한'일을하도록 유도 한 문제입니다. 유지하기가 어렵다.

누락 된 세미콜론과 같이 Crockford가 내가 동의하는 오류로 식별 할 수있는 몇 가지 사항이 있습니다. 세미콜론을 삭제하면 브라우저가 문장의 끝 토큰을 삽입 할 위치를 추측하게되며 때로는 위험 할 수 있습니다 (항상 느림). 그리고 이러한 오류 중 몇 가지는 jQuery가 24 행에서 jQuery처럼 여러 할당을 기대하거나 지원하지 않는 JSLint와 관련이 있습니다.

JSLint 오류에 대한 질문이 있으시면 전자 메일 Crockford에 회신 해 주셔서 그의 회신으로 JSLint가 그렇게 구현 된 이유를 적어도 알게 될 것입니다.

아, 그리고 라이브러리가 인기가 있다고해서 그것이 코드가된다는 것을 의미하지는 않습니다. JQuery는 비교적 빠르고 사용하기 쉬운 라이브러리이기 때문에 인기가 있습니다. 잘 구현 된 것은 많은 사람들에게 인기가 있다는 점에서 다소 중요하지 않습니다. 그러나 코드를 더 많이 읽어야합니다. 모두가해야합니다.

JSLint는 JQuery가 원하는 표준을 통과하지 못하는 경우에도 코드 문제를 식별하는 데 매우 유용 할 수 있습니다.

+5

모든 점을 잘 반영하고 있으며, 인기가 없다는 점을 지적하십시오. 't equal good –

+3

JQery가 실제로 jslint와 호환되도록 노력하고 있습니다! Look here -> http://forum.jquery.com/topic/jquery-1-4-2-jslint-report –

+0

Crockford는 if/for/while, etc 문을 한 줄에 넣는 것을 좋아하지 않습니다. 그는 항상 {} 괄호를보고 싶어합니다. 누가이 문제의 이유를 명확히 할 수 있습니까? (해독 성은 수용 가능한 대답이 아닙니다.) –

9

JSLint는 문제를 잡는 데 도움을 주지만, 타당성을 테스트하거나 생각을 대신 할 수는 없습니다. jQuery는 js가 진행됨에 따라 상당히 앞선 것으로, 그러한 결과를 이해할 수있게합니다. 제 말은 처음 몇 줄의 속도가 빠른 것입니다. 가장 엄격한 js 파서가 몇 가지 오류를 가지고있는 것은 당연합니다.

어쨌든 인기있는 코드가 완벽하게 올바른 코드이거나 '좋음'이라는 가정에 결함이 있습니다. JQuery 코드는 훌륭하다. 많은 것을 배울 수있다. 필자가 작성한 것에 대한 다른 견해를 듣는 것이 좋기 때문에 JSLint를 통해 물건을 실행해야합니다. JSLint의 설명에서

: 당신이 적극적으로 jQuery를 자체 개발하지 않는 경우

JSLint takes a JavaScript source and scans it. If it finds a problem, it returns a message describing the problem and an approximate location within the source. The problem is not necessarily a syntax error, although it often is. JSLint looks at some style conventions as well as structural problems. It does not prove that your program is correct. It just provides another set of eyes to help spot problems.

JSLint defines a professional subset of JavaScript, a stricter language than that defined by Edition 3 of the ECMAScript Language Specification. The subset is related to recommendations found in Code Conventions for the JavaScript Programming Language.

+0

위의 설명 - 링크 양식 JSLint 사이트 추가하기가 적절합니다. –

4

, 왜 아예 그 위에 JSLint를 실행? 작동한다면 작동하고 걱정할 필요가 없습니다.

+4

나는 당신이 말하는 것을 이해하지만 어떻게 설명합니까? 이게 우리 동료 코더들을 돕는거야? –

+0

사람들이 관련성이 무엇인지 생각하고 시간을 보낼 가치가없는 것이 무엇인지 생각해보기를 바랍니다. – nickf

+0

JSLint에 jQuery를 전달하는 것은 코드에서 "정의되지 않은"오류를 피하기 위해 필요합니다. – HRJ

4

jQuery 개발자의 목표는 목표와 다릅니다. jQuery는 속도와 소형성을 위해 개발되었으며 이러한 목표를 달성하는 것은 가독성과 유지 보수성보다 우수합니다.

JSLint에서의 Crockford의 테스트는 어머니를 만나기에 편하다고 느낄만한 것을 성취하는 것과 더 관련이 있습니다. 이것은 당신이 얼마 동안 귀하의 코드와 결혼하게 될 경우에 유효한 우려입니다. . 서브 세트는 관련이

"JSLint 자바 스크립트, ECMA 스크립트 언어 사양의 버전 3에 의해 정의 된보다 엄격한 언어의 전문 집합이 정의

3

JsLint의 목적은 명확하게 자주 묻는 질문 [1]에 명시되어 JavaScript 프로그래밍 언어의 코드 규칙에서 발견 된 권장 사항에 이르기까지. " ECMA3 이미 ([2] 자바 스크립트에과 ECMAScript를 버전 사이의 관계의 개요를 참조)

응답하도록 오늘날 JS 통역 서비스 중 임의의 것에 의해 제공 JS 기능의 부분 집합이다 : 사용자가 혼란되는 경우 지금

"좋은 점은 JSlint가 무엇입니까?": * JsLint를 사용하여 JS 전체 구현을 중단 할 가능성이없는 자바의 "안전한"하위 집합을 사용하고 있는지 확인합니다. *는 크록 포드 코드 규칙을 따라 확인하는 Jslint를 [4]

7

"jQuery는 매우 보급되어 있으므로 어느 정도 코딩이 잘되어 있어야합니다."

jQuery의 경우가 좋겠지 만, 불행히도 사실이 아닙니다. jQuery는 유용하고 인기 있지만 잘 작성된 JavaScript 라이브러리는 아닙니다.

http://groups.google.com/group/comp.lang.javascript/msg/37cb11852d7ca75c?hl=en&

+43

방금 ​​그 전체 실을 읽고 데이비드 마크가 거시기라고 배웠고 jQuery는 짜증 났고 모든 JS 도서관은 빨아 들였고 자신이 쓰지 않는 것은 무엇이든 쓴다. 그리고 그것을 쓰더라도 여전히 짜증 난다. 내가 찾지 못한 것은 jQuery에 대한 대안이나 전혀 도움이되는 제안이었습니다. jQuery는 –

+0

"대체 jQuery"입니까? 경우에 따라 원하는 것을 사용하십시오. jQuery에는 많은 기능이 있으므로 좋은 점이 전혀 없습니다. 작은 libs 작은 featuresets을 가지고 있으므로 필요한 것들을 사용할 수 있습니다. – singpolyma

+2

적어도 빨지 않을 것으로 보이는 것은 분명히 http://forkjavascript.org/ 다음 프로젝트에 사용해 보겠습니다. – vsedach

1

JSLint 매우 어디 한 사례를 발견했습니다 : 데이비드 마크는 최근에 jQuery를 발견 가난한 코드 예제의 큰 숫자를 검사 comp.lang.javascript jQuery에의 통렬한 비판을 게시 , 매우 유용합니다 : 인터넷, 그 다음 또 다른, 또 다른 하나의 주위에 떠있는 커다란 라이브러리 중 하나를 잡으면 새로운 페이지로드마다 50k의 Javascript를로드하게됩니다. (캐싱이 도움이 될 수는 있지만 그렇지 않습니다. 치유 - 모든 솔루션).

그럼 어떻게 하시겠습니까? 해당 라이브러리를 압축하십시오. 그러나 당신의 호스트는 비 html 파일을위한 압축을하지 않습니다! 그래서? Javascript 압축기를 사용합니다.

제가 발견 한 최고가 Dean Edward 's입니다. 나는 John Fraser의 Showdown (Javascript 라이브러리의 Markdown)을 압축하기 위해이 코드를 사용했지만, 불행히도 압축으로 인해 코드가 손상되었습니다. 마무리가 더 이상 지원되지 않으므로 직접 수정해야했습니다. JSlint는 그 점에서 매우 중요했습니다.

요약하면 JSlint는 JS 코드를 강력한 압축 용으로 준비하는 데 유용합니다.

+0

요즘에는 JS 컴프레서가 추상적 기호 트리를 작성하므로 코드를 실제로 압축하지 않은 경우 필요한 코드를 변경하여 코드를 올바르게 압축 할 수 있습니다. – foxxtrot

-1

jQuery와 같은 방식으로 데이지 체인 방식을 사용하고 싶다면 YUI3을 사용하십시오.

-1

JQuery는 물론 세계에서 가장 좋은 것은 아닙니다. 표기법을 볼 때 이미 분명합니다. 달러 괄호 조합은 눈에 좋지 않습니다. 프로그래밍은 명확하고 단순해야합니다. JQuery는 그와는 거리가 멀다. 그 이유는 나를 사용하지 않기에 충분합니다.제대로 작성되지 않았다는 사실이 나를 놀라게하지 않으며이 JavaScript 라이브러리에 대한 나의 생각 만 강조합니다.

+4

-1 나는이 게시물에 거의 모든 금액에 동의하지 않기 때문에 –

관련 문제