2016-06-23 16 views
7

Tôi đang cố gắng tìm ra một quy trình sản xuất tốt phù hợp với luồng công việc phát triển. Nhu cầu là loại trừ 1MB thư viện bên ngoài khỏi bản dựng, sau đó sử dụng CDN để lưu trữ chúng một cách riêng biệt. Vì vậy, chúng tôi có điều này:Luồng công việc sản xuất với SystemJS và các phụ thuộc bên ngoài được lưu trữ qua CDN

<script src="jspm_packages/system.js"></script> 
<script src="config.js"></script> 
<script src="build.js"></script> 
<script> 
    System.import('app/main.js'); 
</script> 

Điều này thật tuyệt, mọi thứ trong main.js đều bị bỏ qua vì nó đã được đưa vào build.js. Mặc dù tôi đoán điều này có nghĩa là khi đã đến lúc quay trở lại tòa nhà phát triển nóng, chúng ta phải xóa build.js trước?

Vì vậy, bây giờ tôi muốn tách phụ thuộc bên ngoài phục vụ sản xuất:

builder.buildStatic('app/main.js', 'build.js', { 
    externals: ['jquery'], 
    globalName: 'App', 
    globalDeps: { 
    'jquery': 'jQuery' 
    } 
}); 

Khi chúng tôi thực hiện điều này, chúng tôi được yêu cầu phải thêm dòng:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2 jquery.min.js"></script> 
<script src="jspm_packages/system.js"></script> 
<script src="config.js"></script> 
<script src="build.js"></script> 
<script> 
    System.import('app/main.js'); 
</script> 

Có nghĩa là khi chúng ta chuyển đổi qua lại để xây dựng phát triển, jQuery sẽ được ghép đôi vào main.js? Sau đó, có đoạn mã từ SystemJS:

System.config({ 
    bundles: { 
     'build/core': ['jquery'] 
    } 
}); 
System.import('app/main.js'); 

Không chắc làm thế nào để sử dụng như bây giờ chúng ta sẽ không được sử dụng một CDN để lưu trữ các jQuery. Vì vậy, với tôi nó cảm thấy giống như một nắm bắt 22. JSPM là rất tốt bởi vì nó cung cấp cho bạn quản lý gói, nhưng để sử dụng các gói trong sản xuất bạn muốn chúng bên ngoài. Vì vậy, nếu chúng ta phải bao gồm các thẻ script anyway trong trang, sau đó không phải là đánh bại mục đích của JSPM ở nơi đầu tiên?

Bất kỳ ý tưởng nào về cách tạo quy trình phát triển/sản xuất dễ dàng và dễ dàng, khi nào chúng tôi muốn chuyển đổi giữa hai chúng tôi không phải thay đổi mã? Chúng tôi muốn một cái gì đó như:

$ NPM chạy sản xuất

$ NPM chạy phát triển

này, mà không cần phải thay đổi bất kỳ loại HTML trong trang trước khi chạy hai. Tôi đã tìm kiếm hàng giờ trên các luồng công việc SystemJS và JSPM khác nhau và dường như không tìm thấy một địa chỉ nào giải quyết tất cả các vấn đề.

SystemJS có được sử dụng trong sản xuất ở bất cứ nơi nào hoặc điều này vẫn đang được xem là công nghệ thử nghiệm không? Tôi đã nhìn thấy có một tiêu chuẩn mới và sắp tới với HTTP/2, nơi nó sẽ tự động tải các mô-đun trên bay, do đó, điều này có nghĩa là nó chuyển sang SystemJS hoặc bị bỏ lại trong bụi?

Trả lời

-1

Tôi chưa sử dụng systemJS để sắp xếp mọi thứ trước đây nhưng không ánh xạ CDN cho công việc jquery? tức là Bạn có thể sử dụng CDN cho góc cạnh và rxjs qua:

map: { 
    ... 
    '@angular': 'https://npmcdn.com/@angular', 
    'rxjs': 'https://npmcdn.com/[email protected]', 
    'jquery': 'http://jquery.cdn' 
} 

Có điều gì đó như thế này giải quyết được sự cố cho bạn không? Tôi thu thập nó có nghĩa là bạn sẽ không thể sử dụng jquery như một toàn cầu và sẽ cần phải nhập nó, nhưng chuyển sang một luồng công việc như thế này có thể hữu ích?

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