Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';这个字符串语法在Java脚本中的意思是什么?_Javascript_Node.js_Mongoose_Export - Fatal编程技术网

Javascript 什么';这个字符串语法在Java脚本中的意思是什么?

Javascript 什么';这个字符串语法在Java脚本中的意思是什么?,javascript,node.js,mongoose,export,Javascript,Node.js,Mongoose,Export,我目前试图自己学习NodeJS,而且我对javascript也完全陌生。当我试图阅读和理解猫鼬时,我发现了这个代码,没有任何解释 在router.js中: var url = require('url'); var fs = require('fs'); exports.get = function(req, res) { req.requrl = url.parse(req.url, true); var path = req.requrl.pathname; if (/\.(css)$

我目前试图自己学习NodeJS,而且我对javascript也完全陌生。当我试图阅读和理解猫鼬时,我发现了这个代码,没有任何解释

router.js
中:

var url = require('url');
var fs = require('fs');
exports.get = function(req, res) {
 req.requrl = url.parse(req.url, true);
 var path = req.requrl.pathname;
 if (/\.(css)$/.test(path)){
  res.writeHead(200, {'Content-Type': 'text/css'});
  fs.readFile(__dirname + path, 'utf8', function (err, data){
   if (err) throw err;
   res.write(data, 'utf8');
   res.end();
  });
 } else {
  if (path === '/' || path === '/home') {
   require('./controllers/home-mongoose').get(req, res);
  } else {
   require('./controllers/404').get(req, res);
  }
 }
}
首先,这是什么导出。获取?我有点理解,
exports=function function(){}
意味着当我可以这样做时:

var router = require('path/router.js');
router.functionA();
var router = require('path/router.js');
router.functionA();
但是我不明白当你进行
导出时它意味着什么


其次,
/\(css)$/.test(path)
。我不懂这个表达式的语法,有人能给我解释一下吗?谢谢

这并不像你想象的那样:

exports = function functionA(){}
您必须设置
模块。导出
,而不是
导出
。此外,您还可以将其用于:

var router = require('path/router.js');
router();
因为您设置了整个导出,而不是名为
function
的属性

但是,您可以仅在导出上设置属性:

exports.get = function functionA(){}
这是因为在模块的设置过程中有一个
var exports=module.exports={}
,并且
module.exports
是最后导出的内容

设置这样的属性意味着,当您需要模块时,可以使用该属性:

var router = require('path/router.js');
router.get();
第二个问题指向使用正则表达式的一行。我建议你对它们做一些研究,或者问第二个问题,如果你想了解那个特定的问题,但是在Javascript中,你可以通过用斜杠(
/
)包围它们来编写文字正则表达式,就像文字字符串被引号包围一样(
/
)。

/\(css)$/
是一个正则表达式,它所做的就是检查给定的路径/文件扩展名是否为“.css”

在javascript中,有两种方法可以构造正则表达式:

  • 使用正则表达式文本:
    var reg=/[a-b]/;

  • 或者使用构造函数
    var reg=new RegExp(“[a-b]”;

  • 您可以阅读有关regexp的更多信息

    关于第一个问题,既然@Aaron Dufour已经解释过了,我相信他;)

    首先,这是什么
    exports.get
    ?我有点理解
    exports=function function(){}
    意味着当我可以做这样的事情时:

    var router = require('path/router.js');
    router.functionA();
    
    var router = require('path/router.js');
    router.functionA();
    
    exports=function function(){}
    实际上并不像您所想的那样

    在节点中,只是一个最初引用
    对象的变量
    。该行正在该对象上设置
    get
    属性/方法

    console.log(exports); // {}
    
    exports.get = function () {};
    
    console.log(exports); // { get: function () {} }
    
    导出
    引用的对象通常与
    require()
    引用模块/文件时返回的对象相同

    // `router` = `module.exports` from `./path/router.js`
    var router = require('./path/router');
    router.get()
    
    有关导出的详细信息,请通读For Node.js


    其次,
    /\(css)$/.test(path)
    。我不懂这个表达式的语法,有人能给我解释一下吗

    表达式的第一部分,
    /\(css)$/
    ,是一个

    /
    s是起始和结束分隔符,其行为类似于字符串文字周围的引号。在它们之间,
    \(css)$
    是正在定义的模式

    \.      // match a single period character
            // escaped to disable the period's "any character" meaning
    (css)   // match the 3 characters, "css", within a capture group
    $       // anchor the pattern to the end of the line/string
    
    表达式也可以使用
    RegExp
    构造函数编写为:

    new RegExp("\\.(css)$").test(path) // note the extra escape needed for the string
    
    1)
    exports
    对象只是一个对象,用于使一个文件中的代码可用于其他地方的代码。因此,在您的情况下,
    exports.get
    只是定义一个名为“get”的属性,而该属性恰好是一个函数。要了解Node.js模块格式,请参阅


    2)
    /\(css)$/.test(path)
    相当于说“嘿,看看变量“path”,看看它是否以“.css”结尾”。有关
    .test

    的更多信息,请参见,谢谢。我得到第一个。我会做研究的,谢谢。我会读的。虽然我没有足够的力量来提升你的awnserI,但我很乐意帮助你:)我明白了。但是我没有通过
    测试。通常,在其他语言中,它应该是另一种方式,如
    path.test(…)
    。无论如何,非常感谢