Xây dựng ứng dụng android bằng javascript
Nếu bạn muốn phân phối một ứng dụng web (hoặc chỉ một trang web) như một phần của ứng dụng khách, bạn có thể thực hiện việc đó bằng cách sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9. Lớp WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 là một phần mở rộng của lớp val myWebView = WebView(activityContext) setContentView(myWebView)1 của Android cho phép bạn hiển thị các trang web như một phần của bố cục hoạt động của bạn. Nó không bao gồm bất kỳ tính năng nào của trình duyệt web được phát triển đầy đủ, chẳng hạn như điều khiển điều hướng hoặc thanh địa chỉ. Theo mặc định, tất cả những gì mà WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 làm là hiển thị một trang web Show
Một tình huống phổ biến trong đó việc sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 hữu ích là khi bạn muốn cung cấp thông tin trong ứng dụng của mình mà bạn có thể cần cập nhật, chẳng hạn như thỏa thuận người dùng cuối hoặc hướng dẫn người dùng. Trong ứng dụng Android của mình, bạn có thể tạo một val myWebView = WebView(activityContext) setContentView(myWebView)4 chứa một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9, sau đó sử dụng nó để hiển thị tài liệu của bạn được lưu trữ trực tuyến Một kịch bản khác mà WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 có thể trợ giúp là nếu ứng dụng của bạn cung cấp dữ liệu cho người dùng luôn yêu cầu kết nối Internet để truy xuất dữ liệu, chẳng hạn như email. Trong trường hợp này, bạn có thể thấy rằng việc tạo một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 trong ứng dụng Android hiển thị một trang web có tất cả dữ liệu người dùng sẽ dễ dàng hơn thay vì thực hiện một yêu cầu mạng, sau đó phân tích cú pháp dữ liệu và hiển thị nó trong một bố cục Android. Thay vào đó, bạn có thể thiết kế một trang web phù hợp với thiết bị Android và sau đó triển khai một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 trong ứng dụng Android tải trang web của bạn Tài liệu này chỉ cho bạn cách bắt đầu với WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 và cách thực hiện một số thao tác bổ sung, chẳng hạn như xử lý điều hướng trang và liên kết JavaScript từ trang web của bạn với mã phía máy khách trong ứng dụng Android của bạn Thêm một WebView vào ứng dụng của bạnĐể thêm một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 vào ứng dụng của mình, bạn có thể bao gồm phần tử WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");21 trong bố cục hoạt động của mình hoặc đặt toàn bộ cửa sổ Hoạt động thành một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");23 Thêm một WebView trong bố cục hoạt độngĐể thêm một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 vào ứng dụng của bạn trong bố cục, hãy thêm mã sau vào tệp XML bố cục của hoạt động của bạn WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");6 Để tải một trang web trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9, hãy sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");26. Ví dụ
Thêm một WebView trong onCreate()Thay vào đó, để thêm một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 vào ứng dụng của bạn theo phương pháp WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");23 của một hoạt động, hãy sử dụng logic tương tự như sau
Sau đó tải trang với
Hoặc tải URL từ chuỗi HTML
Ghi chú. Có những hạn chế về những gì HTML này có thể làm. Xem WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");29 và val myWebView = WebView(activityContext) setContentView(myWebView)50 để biết thêm thông tin về các tùy chọn mã hóa Tuy nhiên, trước khi điều này hoạt động, ứng dụng của bạn phải có quyền truy cập Internet. Để truy cập internet, hãy yêu cầu quyền val myWebView = WebView(activityContext) setContentView(myWebView)51 trong tệp kê khai của bạn. Ví dụ WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");2 Đó là tất cả những gì bạn cần cho một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 cơ bản hiển thị một trang web. Ngoài ra, bạn có thể tùy chỉnh WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của mình bằng cách sửa đổi các mục sau
Làm việc với WebView trên các phiên bản Android cũ hơnĐể sử dụng một cách an toàn các khả năng WebView mới hơn trên thiết bị mà ứng dụng của bạn đang chạy, hãy thêm AndroidX Webkit. Thư viện val myWebView = WebView(activityContext) setContentView(myWebView)59 là thư viện tĩnh mà bạn có thể thêm vào ứng dụng của mình để sử dụng API val myWebView = WebView(activityContext) setContentView(myWebView)60 không có sẵn cho các phiên bản nền tảng cũ hơn Sử dụng JavaScript trong WebViewNếu trang web bạn định tải trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của mình sử dụng JavaScript, bạn phải bật JavaScript cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của mình. Khi JavaScript được bật, bạn cũng có thể tạo giao diện giữa mã ứng dụng và mã JavaScript của mình Bật JavaScriptJavaScript bị tắt trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 theo mặc định. Bạn có thể kích hoạt nó thông qua val myWebView = WebView(activityContext) setContentView(myWebView)57 đính kèm với WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn. Bạn có thể truy xuất val myWebView = WebView(activityContext) setContentView(myWebView)57 bằng val myWebView = WebView(activityContext) setContentView(myWebView)67, sau đó bật JavaScript bằng val myWebView = WebView(activityContext) setContentView(myWebView)68 Ví dụ
val myWebView = WebView(activityContext) setContentView(myWebView)57 cung cấp quyền truy cập vào nhiều cài đặt khác mà bạn có thể thấy hữu ích. Ví dụ: nếu bạn đang phát triển ứng dụng web được thiết kế dành riêng cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 trong ứng dụng Android của mình, thì bạn có thể xác định chuỗi tác nhân người dùng tùy chỉnh bằng val myWebView = WebView(activityContext) setContentView(myWebView)71, sau đó truy vấn tác nhân người dùng tùy chỉnh trong trang web của bạn để xác minh rằng ứng dụng khách yêu cầu Liên kết mã JavaScript với mã AndroidKhi phát triển ứng dụng web được thiết kế dành riêng cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 trong ứng dụng Android của bạn, bạn có thể tạo giao diện giữa mã JavaScript của mình và mã Android phía máy khách. Ví dụ: mã JavaScript của bạn có thể gọi một phương thức trong mã Android của bạn để hiển thị một val myWebView = WebView(activityContext) setContentView(myWebView)73, thay vì sử dụng hàm val myWebView = WebView(activityContext) setContentView(myWebView)74 của JavaScript Để liên kết một giao diện mới giữa mã JavaScript và Android của bạn, hãy gọi val myWebView = WebView(activityContext) setContentView(myWebView)75, chuyển cho nó một phiên bản lớp để liên kết với JavaScript của bạn và một tên giao diện mà JavaScript của bạn có thể gọi để truy cập lớp Ví dụ: bạn có thể đưa lớp sau vào ứng dụng Android của mình
thận trọng. Nếu bạn đã đặt val myWebView = WebView(activityContext) setContentView(myWebView)76 của mình thành 17 hoặc cao hơn, thì bạn phải thêm chú thích val myWebView = WebView(activityContext) setContentView(myWebView)77 vào bất kỳ phương thức nào mà bạn muốn có sẵn cho JavaScript của mình và phương thức đó phải ở chế độ công khai. Nếu bạn không cung cấp chú thích, trang web của bạn không thể truy cập phương pháp này khi chạy trên Android 4. 2 hoặc cao hơn Trong ví dụ này, lớp val myWebView = WebView(activityContext) setContentView(myWebView)78 cho phép trang web tạo thông báo val myWebView = WebView(activityContext) setContentView(myWebView)79, sử dụng phương thức val myWebView = WebView(activityContext) setContentView(myWebView)80 Bạn có thể liên kết lớp này với JavaScript chạy trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn với val myWebView = WebView(activityContext) setContentView(myWebView)75 và đặt tên cho giao diện là val myWebView = WebView(activityContext) setContentView(myWebView)83. Ví dụ
Điều này tạo ra một giao diện có tên là val myWebView = WebView(activityContext) setContentView(myWebView)83 cho JavaScript chạy trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9. Tại thời điểm này, ứng dụng web của bạn có quyền truy cập vào lớp val myWebView = WebView(activityContext) setContentView(myWebView)78. Ví dụ: đây là một số HTML và JavaScript tạo thông báo chúc mừng bằng giao diện mới khi người dùng nhấp vào nút WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");96 Không cần khởi tạo giao diện val myWebView = WebView(activityContext) setContentView(myWebView)83 từ JavaScript. WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 tự động cung cấp cho trang web của bạn. Vì vậy, khi người dùng nhấp vào nút, hàm val myWebView = WebView(activityContext) setContentView(myWebView)89 sử dụng giao diện val myWebView = WebView(activityContext) setContentView(myWebView)83 để gọi phương thức WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");21 Ghi chú. Đối tượng được liên kết với JavaScript của bạn chạy trong một luồng khác chứ không phải trong luồng mà nó được tạo thận trọng. Sử dụng val myWebView = WebView(activityContext) setContentView(myWebView)75 cho phép JavaScript kiểm soát ứng dụng Android của bạn. Đây có thể là một tính năng rất hữu ích hoặc một vấn đề bảo mật nguy hiểm. Khi HTML trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 không đáng tin cậy (ví dụ: một phần hoặc toàn bộ HTML được cung cấp bởi một người hoặc quy trình không xác định), thì kẻ tấn công có thể bao gồm HTML thực thi mã phía máy khách của bạn và có thể là bất kỳ mã nào do kẻ tấn công chọn. Như vậy, bạn không nên sử dụng val myWebView = WebView(activityContext) setContentView(myWebView)75 trừ khi bạn đã viết tất cả HTML và JavaScript xuất hiện trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của mình. Bạn cũng không nên cho phép người dùng điều hướng đến các trang web khác không phải của riêng bạn, trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn. Thay vào đó, hãy cho phép ứng dụng trình duyệt mặc định của người dùng mở các liên kết nước ngoài—theo mặc định, trình duyệt web của người dùng sẽ mở tất cả các liên kết URL, vì vậy, hãy cẩn thận chỉ khi bạn xử lý điều hướng trang như được mô tả trong phần sau) Xử lý điều hướng trangKhi người dùng nhấp vào liên kết từ một trang web trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn, hành vi mặc định dành cho Android là khởi chạy ứng dụng xử lý URL. Thông thường, trình duyệt web mặc định sẽ mở và tải URL đích. Tuy nhiên, bạn có thể ghi đè hành vi này cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của mình, vì vậy các liên kết sẽ mở trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn. Sau đó, bạn có thể cho phép người dùng điều hướng ngược và xuôi qua lịch sử trang web của họ được duy trì bởi WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn Ghi chú. Vì lý do bảo mật, ứng dụng trình duyệt của hệ thống không chia sẻ dữ liệu ứng dụng của nó với ứng dụng của bạn Để mở các liên kết được người dùng nhấp vào, hãy cung cấp val myWebView = WebView(activityContext) setContentView(myWebView)56 cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn, sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");903. Ví dụ
Tất cả các liên kết mà người dùng nhấp vào tải trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn Nếu bạn muốn kiểm soát nhiều hơn nơi tải liên kết được nhấp, hãy tạo val myWebView = WebView(activityContext) setContentView(myWebView)56 của riêng bạn ghi đè phương thức WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906. Ví dụ sau giả định rằng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");907 là một lớp bên trong của val myWebView = WebView(activityContext) setContentView(myWebView)4
Sau đó, tạo một phiên bản của val myWebView = WebView(activityContext) setContentView(myWebView)56 mới này cho WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9
Bây giờ khi người dùng nhấp vào một liên kết, hệ thống sẽ gọi WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906 để kiểm tra xem máy chủ URL có khớp với một miền cụ thể hay không (như đã xác định ở trên). Nếu nó khớp, thì phương thức trả về false để không ghi đè quá trình tải URL (nó cho phép WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 tải URL như bình thường). Nếu máy chủ lưu trữ URL không khớp, thì một WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");913 sẽ được tạo để khởi chạy Hoạt động mặc định để xử lý URL (phân giải thành trình duyệt web mặc định của người dùng) Xử lý các URL tùy chỉnhWebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 áp dụng các hạn chế khi yêu cầu tài nguyên và giải quyết các liên kết sử dụng lược đồ URL tùy chỉnh. Ví dụ: nếu bạn triển khai các cuộc gọi lại như WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906 hoặc WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");916, thì WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 chỉ gọi chúng cho các URL hợp lệ Ví dụ: WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 không thể gọi phương thức WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906 của bạn cho các liên kết như thế này WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");3 Các URL không hợp lệ như trên được xử lý không nhất quán trong WebView, vì vậy chúng tôi khuyên bạn nên sử dụng URL có định dạng tốt để thay thế, chẳng hạn như sử dụng lược đồ tùy chỉnh hoặc sử dụng URL HTTPS cho miền mà tổ chức của bạn kiểm soát Thay vì sử dụng một chuỗi đơn giản trong một liên kết như được hiển thị trước đó, bạn có thể sử dụng một lược đồ tùy chỉnh như sau WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");4 Sau đó, bạn có thể xử lý URL này theo phương pháp WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906 của mình như thế này
API WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906 chủ yếu dành cho việc khởi chạy ý định cho các URL cụ thể. Khi triển khai, hãy đảm bảo trả lại WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");922 cho các URL mà WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 sẽ xử lý. Tuy nhiên, bạn không bị giới hạn trong việc khởi chạy ý định; thận trọng. Đừng gọi WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");26, WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");925 hoặc các phương pháp tương tự từ bên trong WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");906. Điều này dẫn đến các ứng dụng không hiệu quả. Điều hiệu quả hơn cần làm là trả lại WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");922 để cho phép WebView tiếp tục tải URL với triển khai mặc định của nó Điều hướng lịch sử trang webKhi WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 của bạn ghi đè tải URL, nó sẽ tự động tích lũy lịch sử các trang web đã truy cập. Bạn có thể điều hướng lùi và tiến trong lịch sử với WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");929 và WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");930 Ví dụ: phần sau đây cho thấy cách val myWebView = WebView(activityContext) setContentView(myWebView)4 của bạn có thể sử dụng nút Quay lại của thiết bị để điều hướng lùi lại
Phương thức WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");932 trả về true nếu thực sự có lịch sử trang web để người dùng truy cập. Tương tự như vậy, bạn có thể sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");933 để kiểm tra xem có lịch sử chuyển tiếp hay không. Nếu bạn không thực hiện kiểm tra này, thì sau khi người dùng xem hết lịch sử, WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");929 hoặc WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");930 sẽ không làm gì cả Xử lý thay đổi cấu hình thiết bịTrong thời gian chạy, trạng thái hoạt động thay đổi xảy ra khi cấu hình của thiết bị thay đổi, chẳng hạn như khi người dùng xoay thiết bị hoặc loại bỏ trình chỉnh sửa phương thức nhập (IME). Những thay đổi này khiến hoạt động của đối tượng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 bị hủy và hoạt động mới được tạo, hoạt động này cũng tạo đối tượng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");9 mới tải URL của đối tượng bị hủy. Để sửa đổi hành vi mặc định của hoạt động của bạn, bạn có thể thay đổi cách nó xử lý các thay đổi của WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");938 trong bảng kê khai của bạn. Để tìm hiểu thêm về cách xử lý thay đổi cấu hình trong thời gian chạy, hãy đọc Xử lý thay đổi cấu hình quản lý cửa sổTheo mặc định, các yêu cầu mở cửa sổ mới sẽ bị bỏ qua. Điều này đúng cho dù chúng được mở bằng JavaScript hay bằng thuộc tính đích trong một liên kết. Bạn có thể tùy chỉnh val myWebView = WebView(activityContext) setContentView(myWebView)54 của mình để cung cấp hành vi của riêng bạn để mở nhiều cửa sổ thận trọng. Để giữ cho ứng dụng của bạn an toàn hơn, tốt nhất bạn nên ngăn cửa sổ bật lên và cửa sổ mới mở. Cách an toàn nhất để thực hiện hành vi này là chuyển WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");940 vào WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");941 nhưng không ghi đè phương thức WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");942, mà WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");943 phụ thuộc vào. Lưu ý rằng logic này ngăn bất kỳ trang nào sử dụng WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");944 trong các liên kết của nó tải Tôi có thể phát triển ứng dụng Android bằng JavaScript không?Dễ dàng hơn bạn nghĩ. Nếu bạn có thể xây dựng một trang web, bạn có thể xây dựng một ứng dụng Android. Android JS là một khung để tạo các ứng dụng gốc bằng các công nghệ web như JavaScript, HTML và CSS . Nó xử lý các phần khó để bạn có thể tập trung vào cốt lõi của ứng dụng của mình.
Bạn có thể sử dụng JavaScript để xây dựng ứng dụng dành cho thiết bị di động không?Khung JavaScript được coi là tốt nhất khi nói đến việc phát triển và tạo ứng dụng dành cho thiết bị di động hiệu quả , đặc biệt là ứng dụng Android. Chúng là tập hợp các thư viện mã JavaScript cho phép các nhà phát triển web sử dụng mã viết sẵn trong quá trình phát triển của họ.
Bạn có thể tạo ứng dụng Android bằng HTML CSS và JavaScript không?Việc phát triển ứng dụng gốc từ đầu cần có các công nghệ cụ thể cho cả hai nền tảng. HTML, CSS và JavaScript là tất cả những gì cần thiết cho một PWA . |