Khóa học Node.js "Học 1 làm tất"

Đến bao giờ mới mở khóa học tiếp theo hả admin ơi?

read more
Scraping dữ liệu Website với Node.js

@apollovn_91 Trong trường hợp Nganguyen đang nói request là đúng rồi bạn.
Còn API nôm na là khi bạn publish data cho người # sử dụng.

read more
Cần giúp đở về sorket io socket.emit gửi đến một client

Không biết bạn đã fix được chưa, thử cách này xem sao:

var app = require(‘express’)(),
http = require(‘http’).Server(app),
io = require(‘socket.io’)(http); http.listen(1379, function(){ console.log('listening on :1379'); }); use var socket = io(); trong html file

ps/mà comment không thấy chỗ chèn code đâu :| đành viết đại vào vậy

read more
Socket.IO Căn Bản

@cuongpc4rum Tôi chưa thử websocket của android với Socket.IO. Nhưng trước đây tôi có dùng một thư viện [1] để server tương tác với các client là android (sử dụng websocket).
Thư viện này sử dụng Mavel Central để build, bạn chịu khó đọc cách build nhé. Build xong bạn sẽ có một thư viện SocketIO-Client.jar. Bạn add vào thư viện của project android và sử dụng theo hướng dẫn trong link github.

Chúc bạn thành công!
[1]. https://github.com/nkzawa/socket.io-client.java

read more
Tăng giá trị biến trong ng-repeat

Chi tiết về {{$index}} bạn có thể xem ở đây.

read more
Tìm hiểu UI-Router trong AngularJS

upload-ae969994-5733-4ccf-9fe9-2962f845c984.jpg

Trong bài trước mình đã giới thiệu sơ lược về Directive trong Angular,Bạn có thể xem tại đây

UI-Router

Angular cung cấp 1 cách tuyệt vời để làm 1 SPA (single page application).Khi tạo ra 1 SPA ,bộ định tuyến (Route) là cực kỳ quan trọng,bạn muốn trang của mình chỉ cẩn load những dữ liệu tại 1 view và chỉ thực hiện controller trong view đó mà không cần tải lại cả trang web thì đây có lẽ 1 trong những giải pháp tuyệt vời

Ngay bây giờ,chúng ta bắt đầu tìm hiểu 1 cách đơn giản nhất để sử dụng UI-Router

I,What is Angular UI-Router

UI-router là 1 “routing framework” được xây dựng bởi đội ngũ AnguarlUI,nó cung cấp 1 cách khác biệt hơn so với ngRoute của Angular.Ui-router tổ chức dữ liệu thành từng phần theo từng $state (đặc biệt xây dựng 1 multi views) theo từng truy vấn URL.UI-router cho phép bạn xử lý nhiều thao tác với route 1 cách cực kỳ dễ dàng,và đôi khi nó không quan tâm đến URL của bạn mà bạn vẫn có thể thực hiện xử lý ở các view con

II,Get Started Bower: by running $ bower install angular-ui-router npm: by running $ npm install angular-ui-router Component: by running $ component install angular-ui/ui-router

Sau đó bạn chèn file angular-ui-router.js vào trong file index.html của bạn
file js truyền DI : ‘ui.router’ vào trong module

<!doctype html> <html ng-app="myApp"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.min.js"></script> <script src="js/angular-ui-router.min.js"></script> <script> var myApp = angular.module('myApp', ['ui.router']); </script> ... </head> <body> ... </body> </html>

Chú ý rằng gọi ui-router chỉ khi angularjs được load xong.

Chúng ta sử dụng <div ui-view></div> thay vì <div ng-view></div> trong ngRoute

Khi chúng ta tạo 1 link với ui-sref , ui router sẽ tự generated sang href mà bạn muốn trỏ đến 1 cách bình thường

Trong file app.js

var routerApp = angular.module('routerApp', ['ui.router']); routerApp.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/home'); // Mọi đường dẫn không hợp lệ đều được chuyển đến state home $stateProvider .state('home', { // Định ngĩa 1 state home url: '/home', // khai báo Url hiển thị templateUrl: 'home.html', // đường dẫn view controller: function($scope) { // Khai báo 1 controller cho state home $scope.Name= ['Phạm', 'Minh', 'Tài']; } }) });

Khi gọi đến state home ta sử dụng ui-sref :

<a ui-sref="home" class="btn btn-primary">Home</a>

Bây giờ chúng ta sẽ khai báo các state con của state home và cách sử dụng:

$stateProvider .state('home', { // Định ngĩa 1 state home abstract : true, // khai báo có state con url: '/home', // khai báo Url hiển thị templateUrl: 'home.html', // đường dẫn tới template home controller: function($scope) { // Khai báo 1 controller cho state home $scope.Name= ['Phạm', 'Minh', 'Tài']; } }) .state('home.main',{ url: '', // để rỗng mặc định khi view home được load sẽ gọi tới template main đầu tiên templateUrl: 'main.html', // đường dẫn tới template main controller: 'MainCtrl' // gọi xử lý controller khi state được gọi }) .state('home.detail',{ url: '/home/detail/:id', // khai báo tham số ID trên url templateUrl: 'detail-home.html', // đường dẫn tới template detail controller: 'DetailCtrl' // gọi xử lý controller khi state được gọi })

Trong html ta ở file home.html để hiện thị các state con trong nó ta cũng cần cặp thẻ <div ui-view></div

Để di chuyển tới 1 state home.detail có ID ta khai báo :

$state.go('home.detail',{id : _id}) // ID của detail sản phẩm...

Để lấy tham số ID trên url ta thực hiện trong file js:

var _id = $stateParams.id // id này là tham số được gọi tại url home.detail

Để active 1 link ui-sref khi được click và trỏ tới state ta sử dụng cú pháp

<a ui-sref="home" ui-sref-active> Home </a>

Xây dựng multiple views :

<div class="row"> <!--View thứ nhất --> <div class="col-sm-6"> <div ui-view="columnOne"></div> </div> <!-- View thứ hai--> <div class="col-sm-6"> <div ui-view="columnTwo"></div> </div> </div>

file js:

... .state('about', { url: '/about', views: { // View chính của state about '': { templateUrl: 'partial-about.html' }, // Định nghĩa View thứ nhất sẽ được hiện thị không có controller 'columnOne@about': { template: 'Look I am a column!' }, // Định ngĩa hiển thị view thứ 2 với 1 controller 'columnTwo@about': { templateUrl: 'table-data.html', controller: 'aboutController' } } //viewName@stateName là quy ước nên được sử dụng trong multiple }); ... Resolve trong ui-router

MÌnh thường sử dụng cách này để tải dữ liệu trước khi vào app,dưới là 1 ví dụ mình sử dụng :

.state('main', { url : '/main', templateUrl: 'views/main.html', controller: 'MainCtrl', resolve: { 'AppLoad': ['appData', '$q', function (appData, $q) { var AppLoad = $q.defer(); // sử dụng promise //appData là 1 service mình định ngĩa để lấy dữ liệu appData.load().then(function (resp) { AppLoad.resolve(true); }, function () { AppLoad.reject(false); }) return AppLoad.promise; }] } })

Hẹn gặp lại Fan Angular trong những bài chia sẻ tiếp theo,rất mong được sự góp ý và thảo luận của mọi người tại đây.

read more
Học cách sử dụng Router trong Express 4

using-the-express-4-router.jpg

Học cách sử dụng Router trong Express 4

Với Express 4.0 mới được phát hành không lâu, đã có rất nhiều thay đổi đã đến với nó. Những thay đổi này sẽ ảnh hưởng đến cách chúng ta xây dựng một ứng dụng Nodejs và MEAN stack trong tương lai.

Từ sự thay đổi lớn như vậy, trong hướng dẫn lần này, chúng ta sẽ cùng tìm hiểu về một trong những tính năng mới của ExpressJS và cụ thể là Router.

Overview

Router giống như một mini express application. Nó mang lại về mặt hiển thị hay cấu hình, mà nó cung cấp cho chúng ta các API định tuyến như: .use, .get, .param và các route.

Our Sample Application

Chúng ta sẽ tạo ra một ứng dụng có một số route và một vài tính năng.

Basic Routes: Home, About Route Middleware to log requests to the console Route with Parameters Route Middleware for Parameters to validate specific parameters Login routes Doing a GET and POST on /login Validates a parameter passed to a certain route Application Structure

Chúng ta chỉ cần 2 file cho ứng dụng của mình.

package.json server.js

Chúng ta sẽ đặt toàn bộ route của mình trong file server.js. Sau này, các bạn có thể đặt trong các tập tin riêng của mình để tạo thành các module cho ứng dụng của mình.

Starting Our Application

Hãy bắt đầu xây dựng ứng dụng của chúng ta. Chúng ta sẽ bắt đầu với tệp tin package.json để xác định các phụ thuộc của ứng dụng.

// package.json

{ "name": "Express_Router_4", "version": "0.0.1", "description": "Express Router in version 4.0", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git@github.com-Personal:NgaNguyenDuy/Express_Router_4.git" }, "keywords": [ "express", "router", "nodejs", "node.js" ], "author": "NgaNguyenDuy", "license": "MIT", "dependencies": { "express": "^4.8.7" } }

Chúng ta chỉ cần một phụ thuộc là express. Quá tuyệt vời.

Okay, cài đặt các phụ thuộc bằng cách: npm install

Bây giờ chúng ta đã có expressjs, hãy nhìn vào ứng dụng và chúng ta có thể xử lý các route của mình.

Creating Our Server

Chúng ta sẽ sử dụng Express để bắt đầu ứng dụng của mình. Chúng ta đã xác định tệp tin server.js trong tệp tin package.json, đó là tệp tin mà Node sẽ sử dụng. Hãy mở trình soạn thảo yêu thích và thêm các đoạn mã.

// server.js 'use strict'; var app, express, port; express = require('express'); app = express(); port = process.env.PORT || 8080; app.get('/sample-route', function(req, res) { res.send('this is sample route'); }); app.listen(8080, function() { console.log('server was running at port ' + port); });

Bây giờ chúng ta có thể start server của mình. Tôi đã tạo ra một route bằng cách sử dụng app.get mà đã xuất hiện trong Express từ version 3.0. Nếu các bạn duyệt địa chỉ: http://localhost:8080/sample-route các bạn sẽ nhận được thông báo ‘this is sample route’. Bây giờ chúng ta sẽ tạo ra các route bằng cách sử dụng Router trong Express 4.

Express Router

Express Router chính xác là gì? Đơn giản nó chỉ là một công cụ định tuyến. Chúng ta hãy xem chính xác điều này có nghĩa là gì. Chúng ta sẽ đi qua từng phần của một website và sử dụng các tính năng khác nhau của Router.

Basic Routes express.Router()

Hãy tạo một khởi tạo của Router cho việc tạo các route của ứng dụng chúng ta. Nó sẽ bao gồm 2 page là Home và About.

// server.js ... Var router = express.Router(); router.get('/', function(req, res) { res.send('I am the home page'); }); router.get('/about', function(req, res) { res.send('I am the about page'); }); app.use('/', router); ...

Chúng ta sẽ gọi một instance của express.Router(), áp dụng các route với nó, sau đó nói với ứng dụng chúng ta sử dụng router đó. Bây giờ, sau khi start server của các bạn, chúng ta có thể truy cập vào trang chủ tại http://localhost:8080/ và about http://localhost:8080/about

Các bạn nên lưu ý cách thiết lập thư mục gốc để sử dụng các route mà tôi đã xác định. Nếu chúng ta thay đổi app.use (‘/api’, router) thì các route của chúng ta sẽ thay đổi, trang chủ: http://localhost:8080/api/ và about sẽ là: http://localhost:8080/api/about

Điều này là rất tuyệt vời vì chúng ta có thể tạo nhiều express.Router() và sau đó áp dụng vào ứng dụng của mình. Chúng ta có thể có một Router cho các route cơ bản, một Router cho việc xác thực, và Router cho các route API như ở trên. Chúng ta sẽ thảo luận kĩ hơn trong hướng dẫn lần sau, khi chúng ta tìm hiểu về RESTful API. :-) Còn bây giờ, chúng ta sẽ xem xét làm thế nào để sử dụng router middleware để xử lý các requests.

Route Middleware router.use()

Router Middleware trong Express là cách để thực hiện một điều gì đó trước khi một request được sử lý. Điều này có thể hữu ích khi kiểm tra khi người sử dụng đăng nhập, phân tích dữ liệu, hay bất cứ điều gì mà chúng ta muốn làm trước khi trả về thông tin cho người sử dụng.

Dưới đây là một số middleware để console.log ra một tin nhắn mỗi khi có request được thực hiện.

// server.js ... router = express.Router(); router.use(function(req, res, next) { console.log(req.method, req.url); next(); }); router.get('/', function(req, res) { res.send('I am the home page'); }); router.get('/about', function(req, res) { res.send('I am the about page'); }); app.use('/', router); ....

Chúng ta sử dụng các route.use để xác định các middleware. Điều này sẽ được áp dụng cho tất cả các request vào ứng dụng của chúng ta. Chúng ta hãy truy cập http://localhost:8080 và http://localhost:8080/about sẽ thấy một tin nhắn được in ra tại terminal:

2014-08-31-194327_1366x768_scrot.png

Hãy nhớ, trình tự các bạn đặt middleware và các route là rất quan trọng. Tất cả mọi thứ sẽ xảy ra theo thứ tự mà chúng xuất hiện. Điều này có nghĩa rằng nếu bạn đặt một middleware trung gian của bạn sau một route, thì có nghĩa là route này sẽ xảy ra trước khi các middleware và request sẽ kết thúc ở các route đó. Và dĩ nhiên các middleware của bạn sẽ không chạy tại thời điểm đó.

Route with Parameters /hello/:name

Bây giờ chúng ta muốn có một route /hello/:name nơi mà chúng ta có thể pass thông qua tên một ai đó vào URL và bạn sẽ nhận được tin nhắn: Helllo name ! trên trình duyệt.

//server.js Var router = express.Router(); .... router.get('/hello/:name', function(req, res) { res.send('Hello ' + req.params.name + '!'); }); ... app.use ('/', router);

Bây giờ hãy truy cập trình duyệt vào địa chỉ: http://localhost:8080/hello/Nodejs.Vn và xem kết quả trên trình duyệt của bạn:

2014-08-31-203319_1366x768_scrot.png

Bây giờ nếu các bạn muốn xác nhận tên này một cách nào đó, chúng ta muốn chắc chắn rằng nó không phải là một từ khiếm nhã. Chúng ta sẽ xác nhận bên trong các middleware.

Route Middleware for Parameters

Chúng ta sẽ sử dụng phương thức middleware .param(). Điều này sẽ tạo ra middleware sẽ chạy thông qua tham số của một route. Trong trường hợp này, chúng ta sẽ sử dụng :name trong route hello. Đây là params middleware.

// server.js ... router.param('name', function(req, res, next, name) { console.log('Doing something at here on ' + name); req.name = name; next(); }); router.get('/hello/:name', function(req, res) { res.send('Hello ' + req.name + '!'); }); ...

Bây giờ khi chúng ta sử dụng route /hello/:name, route middleware của chúng ta sẽ được sử dụng. Chúng ta có thể chạy các validation hoặc pass qua biến mới của route.get được lưu trữ trong đối tượng req. Từ giờ chúng ta có thể truy cập nó bằng biến req.name.

Khi truy cập địa chỉ http://localhost:8080/hello/Nodejs.Vn chúng ta sẽ thấy request được in ra màn hình terminal.

2014-09-01-074244_2390x768_scrot.png

Các route middleware với các tham số có thể được sử dụng để validate dữ liệu đến ứng dụng của bạn. Nếu bạn tạo một ứng dụng RESTful API, bạn có thể validate một token và chắc chắn người sử dụng có thể truy cập đến thông tin của bạn.

Điều cuối cùng, chúng ta sẽ xem làm thế nào để sử dụng app.route() để sử dụng nhiều route.get

Login Routes app.route

Chúng ta có thể xác định các route của mình ngay trên ứng dụng. Điều này cũng tương tự như việc sử dụng app.get, nhưng chúng ta sẽ sử dụng app.route. app.route là về cơ bản là một shortcut để gọi các Express Router. Thay vì gọi express.Router(), chúng ta có thể gọi app.route và bắt đầu các route của bạn ở đây.

Sử dụng app.route cho phép chúng ta xác định nhiều hành động trên một route login. Chúng ta cần route GET để hiển thị thông tin form, và một route POST để xử lý việc login form.

// server.js .... app.route('/login') .get(function(req, res) { res.send('This is login form'); }) .post(function(req, res) { console.log('Processing ...'); return res.send('Processing the login form ...'); }); ...

Bây giờ chúng ta đã định nghĩa 2 action khác nhau trong cùng một login route. Đơn giản và vô cùng rõ ràng.

Conclusion

Với việc sử dụng Express 4 router, chúng ta có được sự linh hoạt hơn bao giờ hết trong việc xác định các route của mình. Tóm lại, chúng ta có thể:

Sử dụng express.Router() nhiều lần để định nghĩa một nhóm các route.get Áp dụng các express.Router() đến một phần của website sử dụng app.use() Sử dụng middleware để xử lý các yêu cầu request. Sử dụng route middleware để validate tham số sử dụng .param() Sử dụng app.route() như một shortcut để định nghĩa nhiều request trên một route.get

Với tất cả những cách mà chúng ta có thể sử dụng route, tôi chắc chắn rằng ứng dụng của bạn sẽ mang lại lợi ích trong tương lai. Hãy để lại comment nếu bạn có bất kì câu hỏi hay đề nghị nào.

Link gốc tiếng anh: http://goo.gl/zGtGBs

read more
Làm sao để gọi file mongo.exe trong project của Webstorm

bạn thử thêm đường dẫn đến mongo.exe vào environment variables PATH xem

read more
Redis Là Gì?

@tungnguyen Bạn có thể cho mình một ví dụ về cái này được không? Cám ơn nhiều nhé :-)

Điểm khác biệt dễ nhận thấy của Redis là: Key là một string nhưng value thì không giới hạn ở một string mà có thể là List, Sets, Sorted sets, ….

read more
Sử Dụng Công Cụ Chrome DevTools

Chào cả nhà, hôm nay đưa 1 bài viết hữu ích cho những bạn rất cần nó. Chắc hẳn chúng ta đều biết Extension DevTools có sẵn Google Chrome (F12).
Nhưng nhiều bạn ở đây chưa dùng hết được khả năng Tools đưa lại. Đặc biệt là trong vấn đề xử lý hiệu năng và debug javascript.

Website : http://discover-devtools.codeschool.com
Giới thiệu : Là sự kết hợp giữa Code School và sự tài trợ Google, chương trình học cách sử dụng công cụ DevTools của Chrome.

Chúng ta sẽ có 7 level như sau :

Level 1: Bắt đầu làm quen và cơ bản DOM và Styles
Level 2: Nâng cao DOM và Styles
Level 3: Làm việc với Console
Level 4: Làm việc JavaScript
Level 5: Nâng cao hiệu suất Network
Level 6: Nâng cao hiệu suất Website
Level 7: Theo dõi Memory

TungNguyen

read more
Shop bán hàng full nodejs vietcoin.com

@newbie Bạn tham gia khóa học đi :) !!! Tự mình làm luôn

read more