Hỏi về require() và các define 1 instance trong express



  • @Hung-Pham-Do đã nói trong Hỏi về require() và các define 1 instance trong express:

    http://expressjs.com/en/4x/api.html

    Thanks bạn

    Theo mình hiểu express() là 1 function nằm trong module express, và nó đã đc exports nên lúc này function express sẽ access được vào từ 1 file khác (ở đây là gán vào app). Và các child method như set use nên lúc này biến app chính là instance của hàm express() ?

    Còn require() nó về cơ bản là instance của 1 module express?



  • @picolo đã nói trong Hỏi về require() và các define 1 instance trong express:

    Thanks bạn

    Theo mình hiểu express() là 1 function nằm trong module express, và nó đã đc exports nên lúc này function express sẽ access được vào từ 1 file khác (ở đây là gán vào app). Và các child method như set use nên lúc này biến app chính là instance của hàm express() ?

    Yep!!!

    Còn require() nó về cơ bản là instance của các 1 module express?

    Đơn giản là chỉ sử dụng những gì module express export ra chứ ko phải là instance của module :)



  • Khá nhiều điều thú vị về method require() này,
    Khi require cùng một module ('module_name') trong nhiều file khác nhau của 1 project (var module = require('module_name')) , require sẽ trả về duy nhất một instance đã được khởi tạo từ lần đầu tiên => module được require ở các file khác nhau sẽ dùng chung 1 instance.
    Các bạn cho ý kiến về điều này được không ạ?



  • @atatakai-mashou Cái này hình như có 1 topic hỏi rồi và đúng là như thế :D. require('abc') sẽ được cache lại, và chỉ có duy nhất 1 instance trong cùng 1 project :)



  • @thelonglqd nếu 2 require trong 1file thì thế nào a. Trả về 2 instane A và B. Rồi nếu require ở file khác thì trả về instance nào a, là A hay B. Rồi nếu có 1 file khác nữa chứa 2 require nữa thì có trả về A và B k hay trả về khác a. :(



  • @Thế-Vĩ-Trịnh bạn cứ phức tạp vấn đề quá, các bạn ấy đã bảo require chỉ trả về duy nhất một instance , bạn có require ở mấy file nó cũng chỉ có 1 địa chỉ thôi.
    Vì trong lần đầu require(module) => require tạo ra cache object. Các lần tiếp theo nó sẽ check trong cache, có trong bộ nhớ cache thì trả lại luôn nên nó là duy nhất.

    Bạn thích tìm hiểu sâu nữa không :D vào web các bạn bên kipalog.com xem các "thánh" ấy chém gió nhé, mấy bạn bên ấy thích nghiên cứu SÂU và viết bài kiểu thần thánh và có lẽ sẽ hợp với các bạn muốn phức tạp mọi thứ =))



  • @Thế-Vĩ-Trịnh Ý bạn là require 2 module giống nhau trong cùng 1 file à?
    Kiểu như:

    var http = require('http');
    var http1 = require('http');

    Nếu ý bạn như trường hợp trên m vừa viết thì không phải là 2 instances, mà chỉ là 2 biến, trỏ vào cùng 1 instance ở trong cache thôi bạn nhé. Nói chung nó vẫn là 1 object thôi ^^.



  • @thelonglqd tks các bạn, m- có muốn phức tạp đâu, nghe các bạn trên bảo là require trong 2 file khác nhau nên m- nghĩ nếu require trong cùng 1 file thì thế nào vì trc đây m- từng đọc 1 file code require 2 lần cùng 1 module mà k hiểu để làm j nên hỏi thôi mà. :'(


  • Global Moderator

    @thelonglqd đã nói trong Hỏi về require() và các define 1 instance trong express:

    @Thế-Vĩ-Trịnh Ý bạn là require 2 module giống nhau trong cùng 1 file à?
    Kiểu như:

    var http = require('http');
    var http1 = require('http');

    Nếu ý bạn như trường hợp trên m vừa viết thì không phải là 2 instances, mà chỉ là 2 biến, trỏ vào cùng 1 instance ở trong cache thôi bạn nhé. Nói chung nó vẫn là 1 object thôi ^^.

    Chuẩn (y)


Log in to reply