Tôi đang tìm cách bắt đầu viết một ứng dụng tinh vi trong JavaScript để chạy trên web. Tôi đã viết một chút code throwaway trong JavaScript trước đây, sử dụng DOM trực tiếp và một chút jQuery. Nhưng đây là lần đầu tiên tôi tìm cách viết một ứng dụng chính thức để chạy trong trình duyệt.Có gì trong chuỗi công cụ JavaScript của bạn?
Vì vậy, tôi tự hỏi những công cụ mà mọi người thích làm cho phát triển nghiêm túc trong JavaScript. Cụ thể, tôi quan tâm đến những điều sau đây, cùng với một số thông tin về lý do bạn chọn các thành phần bạn đã làm và cách chúng khớp với nhau trong quy trình làm việc của bạn:
- Trình chỉnh sửa/chế độ/trình chỉnh sửa của trình chỉnh sửa và biên tập nào sử dụng? Tôi thường là người dùng Emacs và đang sử dụng
js2.el
vào lúc này, nhưng tôi quan tâm đến việc nghe về các thiết lập khác. - Bạn có sử dụng bất kỳ loại IDE nào (Aptana, Dashcode hoặc các loại tương tự) không?
- Bạn sử dụng thư viện hoặc khung công tác JavaScript nào?
- Bạn có sử dụng bất kỳ ngôn ngữ nào biên dịch thành JavaScript (GWT, haxe, Objective-J) không?
- Bạn sử dụng khung kiểm tra đơn vị nào? Làm thế nào để bạn gọi chúng? Chúng có thể được gọi từ trình soạn thảo/IDE của bạn, từ dòng lệnh, từ trình duyệt trong một trang web, từ trình gỡ lỗi JavaScript của bạn không?
- Bạn sử dụng công cụ kiểm tra giao diện người dùng tự động nào (chẳng hạn như Selenium, Watir, Sahi)? Một lần nữa, làm thế nào có thể được gọi? (Có thể gọi kiểm tra đơn vị và kiểm tra giao diện từ dòng lệnh sẽ rất hữu ích, để chạy buildbots)
- Bạn sử dụng công cụ chất lượng mã nào khác (JSlint, công cụ bảo vệ mã hoặc bất kỳ thứ gì sắp xếp)?
- Bạn sử dụng gì cho môi trường gỡ lỗi của mình (Firebug, thanh tra WebKit, v.v)? Liệu nó có bất kỳ tích hợp với trình soạn thảo của bạn hoặc IDE?
- Bạn xử lý hậu kỳ nào trên mã của mình trước khi triển khai (obfuscators, minifiers, bất kỳ loại trình tối ưu hóa nào)?
- Bạn có bất kỳ loại công cụ nào để quản lý phụ thuộc vào mô-đun hoặc tải mã động khi cần thiết không? Ứng dụng tôi đang viết sẽ làm việc với một lượng lớn mã và tôi muốn giữ thời gian tải xuống, vì vậy các công cụ để theo dõi những mô-đun nào cần hoặc tải mã theo yêu cầu sẽ hữu ích.
- Có bất kỳ công cụ thiết yếu nào khác trong chuỗi công cụ của bạn (cụ thể cho phát triển JavaScript cho các ứng dụng dựa trên trình duyệt không; Tôi đã có một hệ thống kiểm soát phiên bản hoàn hảo, trình theo dõi lỗi, v.v)?
Tôi ít quan tâm đến danh sách "đây là một loạt những thứ bạn có thể sử dụng" (tôi biết rất nhiều công cụ có sẵn) và hơn thế nữa trong ngăn xếp mà bạn thực sự sử dụng thực hành và làm thế nào nó phù hợp với nhau. Tôi hy vọng phát triển chủ yếu như ứng dụng phía máy khách, với máy chủ chỉ được sử dụng để xác thực và lưu trữ và truy xuất dữ liệu, vì vậy tôi không quan tâm đến khung bên máy chủ nào bạn sử dụng, trừ khi nó là không thể thiếu với khách hàng mã phụ theo một cách nào đó.
chỉnh sửa: Tôi đặc biệt quan tâm đến các đơn vị và khung kiểm tra giao diện người dùng và cách bạn tự động hóa chúng. Tôi thích có thể chạy một nhiệm vụ "kiểm tra" hoặc "kiểm tra rake" đơn lẻ từ dòng lệnh để chạy tất cả các thử nghiệm cho các dự án và trả về trạng thái tùy thuộc vào sự thành công hay thất bại của các thử nghiệm. Điều này sẽ cho phép tích hợp dễ dàng hơn nhiều với buildbots. Ngoài ra, tôi quan tâm nếu có ai đó viết bài kiểm tra đơn vị có thể chạy bên ngoài trình duyệt (bằng Rhino, spidermonkey, v8 hoặc tương tự) cho mã không phụ thuộc vào trình duyệt, để quay vòng nhanh hơn trên một tập hợp con của bạn kiểm tra.
Câu trả lời hay! Rất nhiều thông tin hữu ích. Một vài nhận xét: "JavaScript được biên dịch bởi các ngôn ngữ như Objective-J sẽ không bao giờ chặt chẽ như mã được tạo bởi một nhà phát triển JavaScript mạnh" - có vẻ như việc loại bỏ các ngôn ngữ cấp cao của lập trình viên lắp ráp. Tôi đã nghe nói rằng GWT thực hiện một số tối ưu hóa khá ấn tượng mà sẽ khó làm bằng tay. "Tôi ghét làm cho các nhà phát triển JavaScript non trẻ khó học hỏi từ công việc của tôi" - Tôi ở cùng bạn ở đây, nhưng chúng tôi có thể sẽ có nhiều mã, vì vậy việc rút gọn có thể cần thiết (và mã sẽ là mã nguồn mở). –
Tương tự lắp ráp không nhất thiết phải là một công bằng, vì bạn luôn có thể tin tưởng vào sự trừu tượng của lắp ráp đang chạy trong cùng một môi trường. Số lượng các môi trường có thể (trình duyệt/kết xuất/nền tảng) mà cùng một mã JavaScript có thể chạy rất lớn. Kêu gọi mở nguồn cho công việc của bạn, thật tuyệt vời khi nghe. Nếu bạn cần giảm thiểu, tôi khuyên bạn nên rút gọn JavaScript của mình dưới dạng móc hậu sau khi tôi đề xuất trong câu trả lời của tôi. –
Tính đến tháng 2 năm 2011, có một nhánh thú vị của JSLint, có một số lợi ích từ cộng đồng JS: http://jshint.com/ – dermatthias