47

Tôi có một nhiệm vụ liên quan đến việc tạo một thư viện JavaScript mà sau đó sẽ được sử dụng bởi nhiều dự án trong một giải pháp Visual Studio. Lý tưởng nhất là tôi muốn tìm loại dự án có thể, đối với mã JavaScript của tôi, hoạt động như thể đó là thư viện lớp C#, tức là:Loại dự án JavaScript cho Visual Studio?

  • Nó sẽ "biên dịch" (rút gọn, kiểm tra theo ...) mã JavaScript vào một số đầu ra ** .js * file
  • Đầu ra này có thể được "tham chiếu" bởi các dự án khác, ví dụ bởi một dự án ASP.NET MVC
  • tôi có thể xác định một "xây dựng trật tự" của các dự án của tôi (tiêu chuẩn VS tính năng)

Đây có phải là có thể với VS 2010/11 hay tôi cần phải viết một số BAT/PowerShell các tập tin và kịch bản nó bản thân mình?

tương tự nhưng hơi khác câu hỏi: Visual Studio Project Template for JavaScript/VBScript?

+0

Tôi nghi ngờ bạn sẽ có nhiều thành công làm * bất cứ điều gì * với Visual Studio khi nói đến JavaScript. Bạn có thể xem [WebStorm] (http: //www.jetbrains.com/webstorm /) –

+0

Tôi không muốn sử dụng một IDE khác nhưng nếu tôi phải làm thế nào, bạn sẽ đề xuất cấu trúc giải pháp bao gồm cả dự án WebStorm JS và dự án Visual Studio .NET như thế nào? Dự án WebStorm sẽ "triển khai" vào thư mục dự án ASP.NET MVC hay bạn sẽ sử dụng một số tập lệnh? – Borek

+0

Tôi không chắc chắn. Đối với tôi, tôi giữ cho WebStorm mở để viết mã của tôi và tôi chuyển sang VS để chạy/triển khai mã của tôi. Nó không phải là thiết lập thanh lịch nhất trên thế giới, nhưng bất cứ điều gì là tốt hơn so với viết JS trong VS! :) –

Trả lời

9

Dựa trên kinh nghiệm của tôi đang phát triển Asp.Net MVC, Visual Studio đã hạn chế hỗ trợ JavaScript. Tôi cho rằng có cái gì đó bạn có thể làm gì để bắt chước các hành vi mà bạn muốn:

  1. Tạo một dự án để lưu trữ các file JavaScript của bạn, có lẽ một dự án Class Library nó không thực sự quan trọng, miễn là nó hỗ trợ xây dựng Sự kiện . Đặt các tệp JavaScript của bạn bên trong dự án mới.

  2. Tạo bước tạo bài đăng trên dự án này để giảm thiểu JavaScript của bạn bằng công cụ bên ngoài. Tôi sử dụng YUI Compressor. Bước tạo bài đăng của bạn nên chứa các dòng tương tự như sau:

    java -jar $ (ProjectDir) Scripts \ yuicompressor-2.4.7.jar $ (SolutionDir) Scripts \ yourJsFile.js -o $ (SolutionDir) Scripts \ yourJsFile .min.js --charset utf-8

  3. Bao gồm dự án mới này trong giải pháp của bạn. Sau đó cho các dự án Asp.Net của bạn, thiết lập các trang Active Server của bạn sao cho chúng tham khảo các tệp JavaScript, tôi đang sử dụng cú pháp Razor làm ví dụ. Nó có thể là khó khăn để cụ thể đường dẫn chính xác mặc dù:

@if (@Model.IsDebug) 
{ 
<script src="@Url.Content("~/Scripts/yourJsFile.js")" type="text/javascript"> </script> 
} 
else 
{ 
<script src="@Url.Content("~/Scripts/yourJsFile.min.js")" type="text/javascript"></script> 
} 

Một lần nữa nó có thể là khó khăn để đảm bảo rằng bạn có thể tham khảo một cách chính xác các tập tin JavaScript từ dự án Asp.Net của bạn. Nhưng tôi chắc chắn có một cách để làm điều đó. Có lẽ bạn có thể có bước xây dựng bài đăng của mình sao chép các tệp JavaScript vào một số vị trí chung. Nếu bạn làm điều này, bạn cũng sẽ muốn đánh dấu sự kiện xây dựng bài đăng trên dự án JavaScript của mình là "Luôn chạy", vì vậy các tệp JavaScript luôn được sao chép.

7

Câu hỏi hay (+1). Tôi quyết định đã được đặt tất cả các tập tin javascript chung để tách javascript dự án và sử dụng linked files để cần thiết js tập tin trong web/dự án mvc. Bằng cách này bạn có thể sử dụng khả năng điều khiển subversioning từ phía dự án javascript và nén và ghép các tệp js từ các dự án chung riêng biệt sử dụng tất cả các công cụ có sẵn.

+0

+1 đây là tuyệt quá! – devlord

+0

Điều này thật tuyệt. Nhưng khi bạn sử dụng JavaScript trong dự án ASP.NET MVC bằng cách sử dụng các tệp js được liên kết, có một vấn đề nhỏ khi gỡ lỗi ứng dụng. Bởi vì nó nằm ngoài thư mục ứng dụng gốc, bạn nhận được thông báo lỗi "Không thể sử dụng hàng đầu .. để thoát khỏi thư mục trên cùng." Bất kỳ giải pháp cho điều đó? –

3

Tôi thực sự tò mò về điều này! Xin vui lòng @ bình luận với tôi nếu có ai đến với những ý tưởng khác/tốt hơn.

Tùy chọn 1: ASP.Dự án Web với Web Essentials

Nếu bạn chỉ muốn một dự án javascript kết thúc trước, đây là một lựa chọn dễ dàng. Web Essentials rất dễ sử dụng và cài đặt trong Visual Studio. Bạn có thể sử dụng điều này để dễ dàng minification. Sau đó, bạn có thể sử dụng Qunit để thử nghiệm. Đây là một điểm vào trọng lượng khá dễ dàng và nhẹ vào sự phát triển phía máy khách javascript.

Tùy chọn 2: Công cụ Node.js cho Visual Studio

Sử dụng Node.js Tools for Visual Studio. Nó sẽ cung cấp cho bạn các mẫu dự án cho rất nhiều những điều tốt đẹp này. Bạn có thể không kết thúc bằng cách sử dụng node.js đặc biệt nếu bạn chỉ tạo thư viện js phía máy khách, nhưng việc có node.js là hữu ích để thử nghiệm và bạn sẽ cần/cần npm để cài đặt tất cả những điều tốt đẹp khác được đề cập trong câu trả lời gốc của tôi (Tùy chọn 3).

Có rất nhiều thiết lập liên quan đến điều này. Nó có thể là rào cản đối với một số nhà phát triển .NET.

Lựa chọn 3: trang web dự án

Dưới đây là những gì tôi đã làm trong quá khứ:

enter image description here

Tôi thực sự tạo this project trong Eclipse! (Đừng ghét tôi). Sau đó tôi tạo ra một giải pháp Visual Studio với một dự án trang web. Tôi đã cài đặt node.js mà chắc chắn không cần thiết, nhưng tôi đã sử dụng nó như một máy chủ web nhẹ.

Sau đó, bạn có thể sử dụng NuGet hoặc Bower để cài đặt những thứ khác như:

  1. require.js quản lý mô-đun
  2. nhài cho kiểm tra đơn vị
  3. grunt hoặc nuốt chửng cho bản dựng (minification)
  4. Bạn có thể cài đặt jslint hoặc jshint để sửa mã.

Không phải tất cả những điều này là bắt buộc. Tôi nghĩ rằng Bower được tích hợp vào Visual Studio 2015. Một số trong số này sẽ yêu cầu xây dựng dòng lệnh, nhưng có rất ít lệnh để chạy khi bạn thiết lập nó.

+0

Tôi đang xem xét việc tạo một dự án JavaScript trong Visual Studio. Có bất kỳ điều kiện tiên quyết nào để tạo một dự án JavaScript, chẳng hạn như các mẫu nào là cần thiết, và những gói nào khác được yêu cầu cho Visual Studio? –

+0

@ tom_mai78101, hãy thử ** Tùy chọn 1 **. Bạn thậm chí không cần thiết yếu cho web, mặc dù nó rất tiện dụng để giảm thiểu. Các cài đặt web cần thiết là dễ dàng. – Jess

+0

Được rồi, cảm ơn. –

0

Nếu bạn muốn truy cập trước khi xây dựng/xây dựng (không thực sự cần thiết với trình khám phá tác vụ), tạo một dự án ASP.net Core trống (nó sẽ ẩn thư mục node_modules và tệp sẽ tự động được đưa vào dự án (BUT, điều này tạo ra một obj và bin thư mục, có thể gây phiền nhiễu.Một điều tốt ở đây là nếu bạn xây dựng dự án của bạn trong wwwfolder, bạn có thể sử dụng lệnh publish từ Visual Studio

Nếu bạn không quan tâm đến những điều trên, một dự án C# được chia sẻ không tạo ra kết quả, vì vậy nó là một mẫu tốt để tạo một dự án javascript (tôi sử dụng nó cho tất cả các vue spa của mình) Các nhược điểm ở đây là tập tin làm tổ sẽ không hoạt động = \

Các vấn đề liên quan