Bạn có chắc chắn muốn xóa bài viết này không ?
Bạn có chắc chắn muốn xóa bình luận này không ?
Có gì mới ở AdonisJs Web Framework/Node.js phiên bản v4.0
Nội dung
- Javascript ES6 (Language changes)
- Directory structure
- Routing
- Request
- Views
- Models
Javascript ES6
Node.js v8.0 bổ sung lên đến 99% tính năng từ ES6, V8 engine nhận được nhiều cải tiến về hiệu suất.
# Sử dụng cú pháp mới async/await
Generator functions sử dụng từ khoá yield không còn được hỗ trợ, thay vào đó ta sử dụng async/await.
Điều này có nghĩa là tất cả function bắt đầu với*
cần được thay thế bởiasync
vàyield
sẽ được thay thé bởiawait
.
Cú pháp cũ* index () { yield User.all() }
Cú pháp mới
async index () { await User.all() }
Trong AdonisJs v4.0, tất cả các route handle và controller action sẽ nhận một object
thay vì nhận multiple parameters
.
Cũ
Route.get('/', function * (request, response) {
})
Mới
Route.get('/', async ({ request, response }) => {
})
Directory structure
├── app
│ ├── Commands
│ ├── Controllers
│ ├── Listeners
│ ├── Middleware
│ ├── Models
├── config
├── database
│ ├── migrations
│ ├── seeds
│ └── factory.js
├── node_modules
├── providers
├── public
├── resources
│ └── views
├── start
│ ├── app.js
│ ├── kernel.js
│ └── routes.js
├── .editorconfig
├── .env
├── .env.example
├── .gitignore
├── ace
├── package.json
├── package-lock.json
├── README.md
├── server.js
# bootstrap
Đổi tên
bootstrap → start
#Controllers
Controllers và Http đổi chỗ cho nhau
app/Http/Controllers → app/Controllers/Http
#Models
Model có thêm chữ s
app/Model → app/Models
#routes.js
File routes.js
được chuyển từ app/Http/routes.js
tới start/routes.js
#kernel.js
File kernel.js
chuyển từ app/Http/kernel.js
tới start/kernel.js
Routing
#group
Cú pháp cũ
Route.group('auth', () => {
})
Cú pháp mới
Route.group(() => {
})
#Route.route
Cú pháp cũ
Route.route('/', ['GET', 'POST'], () => {
})
Cú pháp mới
Route.route('/', () => {
}, ['GET', 'POST'])
Request
#param/params
The
param/params
đã bị loại bỏ trong v4.0, thay vào đó sử dụngparams
object.
CũRoute.get('users/:id', function (request) { const id = request.param('id') })
Mới
Route.get('users/:id', function ({ params }) { const id = params.id })
View
AdonisJs v4.0 mặc định sử dụng Edge template engine thay thế nunjucks
Tham khảo Edge edge.adonisjs.com/docs/getting-started
#response.sendView
response.sendView
function đã bị thay thế bởiview.render
.
CũRoute.get('/', function * (request, response) { yield response.sendView('home') })
Mới
Route.get('/', ({ view }) => { return view.render('home') })
Models
#extend
Cũ
const Lucid = use('Lucid')
class User extends Lucid {
}
Mới
const Model = use('Model')
class User extends Model
}
Tham khảo nguồn:
[1] https://scotch.io/tutorials/whats-new-in-adonisjs-40
[2] https://www.adonisjs.com/docs/4.0/upgrade-guide







