JavaScript模块化思想requireJS的选取,跨域设置

By admin in 4858美高梅 on 2019年3月30日

旧版本中:dev-server.js 那段去掉

Linux系统入门教程:如何在 Linux 上设置 Node.js

难点: 怎样在您的 Linux 发行版上设置 Node.js?

Node.js 是手无寸铁在谷歌(Google)的 V8 JavaScript
引擎服务器端的软件平台上。在创设高质量的劳动器端应用程序上,Node.js 在
JavaScript 中已是首要选拔方案。是何许让动用 Node.js
库和应用程序的大幅度生态系统来支付服务器后台变得这么流行。Node.js
自带1个被称之为 npm 的命令行工具得以让你轻松地设置它,举行版本控制并接纳npm 的在线仓库来保管 Node.js 库和应用程序的正视关系。

4858美高梅 1

在本教程中,笔者将介绍 怎么着在主流 Linux 发行版上安装 Node.js,包括Debian,Ubuntu,Fedora 和 CentOS 。

Node.js 在部分发行版上有预塑造的次第包(如,Fedora 或
Ubuntu),而在别的发行版上你须求通过源码安装。由于 Node.js
发展相比快,建议从源码安装新型版而不是安装一个过时的预营造的程序包。最新的
Node.js 自带 npm(Node.js 的包管理器),让你能够轻松的装置 Node.js
的外表模块。

 

  1. 使用require.js的意义

什么样保管CSS和JS文件,一贯是前者1个紧俏的话题。下边将简单分享一下用到体验,欢迎大家吐槽、拍砖和提供更好的落到实处际意况势。

var apiRoutes = express.Router()
//getList
apiRoutes.get('/getDiscList', function (req, res) {
  var url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg'
  axios.get(url, {
    headers: {
      referer: 'https://c.y.qq.com/',
      host: 'c.y.qq.com'
    },
    params: req.query
  }).then((response) => {
    res.json(response.data)
  }).catch((e) => {
    console.log(e)
  })
})
//lyric
apiRoutes.get('/lyric', function (req, res) {
  var url = 'https://c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric_new.fcg'

  axios.get(url, {
    headers: {
      referer: 'https://c.y.qq.com/',
      host: 'c.y.qq.com'
    },
    params: req.query
  }).then((response) => {
    var ret = response.data
    if (typeof ret === 'string') {
      var reg = /^\w+\(({[^()]+})\)$/
      var matches = ret.match(reg)
      if (matches) {
        ret = JSON.parse(matches[1])
      }
    }
    res.json(ret)
  }).catch((e) => {
    console.log(e)
  })
})
//use
app.use('/api', apiRoutes)

在 Debian 上安装 Node.js on

从 Debian 8 (杰西)开首,Node.js
已被纳入法定软​​件仓库。由此,你可以使用如下方式安装它:

  1. $ sudoapt-get install npm

在 Debian 7 (Wheezy) 从前的版本中,你必要利用上面包车型大巴章程来源码安装:

  1. $ sudoapt-get install python g++make
  2. $ wget http://nodejs.org/dist/node-latest.tar.gz
  3. $ tar xvfvz node-latest.tar.gz
  4. $ cd node-v0.10.21(replace a version with your own)
  5. $ ./configure
  6. $ make
  7. $ sudomake install

 

 

1、管理CSS文件,本博客将商量less管理。

 

4858美高梅,在 Ubuntu 或 Linux Mint 中安装 Node.js

Node.js 被含有在 Ubuntu(13.04
及更高版本)。由此,安装格外简单。以下方法将设置 Node.js 和 npm。

  1. $ sudoapt-get install npm
  2. $ sudoln-s /usr/bin/nodejs /usr/bin/node

而 Ubuntu 中的 Node.js 只怕版本相比较老,你能够从 其 PPA
中装置新型的本子。

  1. $ sudoapt-get install python-software-properties python g++make
  2. $ sudo add-apt-repository -y ppa:chris-lea/node.js
  3. $ sudoapt-get update
  4. $ sudoapt-get install npm

 

(1)达成JS文件的异步加载,幸免网页因为加载JS文件缓慢造成网页未响应

iReset.less、iButton.less、iCss3.less、iIcon.less、iTab.less、iMenu.less、iDialog.less、iForm.less、iDatagrid.less等等文件、以上文件都以纤维模块文件。
把地点的文书按实际要求统百分之十三个iBase.less文件。如:打算将iReset.less、iButton.less合并在iBase.less中。

在 新的 webpack.dev.config.js 中 添加

在 Fedora 中安装 Node.js

Node.js 被含有在 Fedora 的 base 仓库中。由此,你能够在 Fedora 中用 yum
安装 Node.js。

  1. $ sudoyum install npm

一旦你想安装 Node.js 的新型版本,可以服从以下步骤使用源码来安装。

  1. $ sudoyum groupinstall 'Development Tools'
  2. $ wget http://nodejs.org/dist/node-latest.tar.gz
  3. $ tar xvfvz node-latest.tar.gz
  4. $ cd node-v0.10.21(replace a version with your own)
  5. $ ./configure
  6. $ make
  7. $ sudomake install

 

(2)管理模块之间的借助,便于代码的编写制定和保障。页面中只供给引入require.js和main.js,别的的js文件全体透过require.js管理。

在iBase.less中引入如下文件即可:
@import “iReset.less”;
@import “iButton.less”;

    //-------------------axios 结合 node.js 代理后端请求 start
const express = require('express')
const axios = require('axios')
const app = express()
var apiRoutes = express.Router()
app.use('/api', apiRoutes)
    //-------------------axios 结合 node.js 代理后端请求 end

const devWebpackConfig = merge(baseWebpackConfig, {
    module: {
        rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
    },
    // cheap-module-eval-source-map is faster for development
    devtool: config.dev.devtool,

    // these devServer options should be customized in /config/index.js
    devServer: {
        clientLogLevel: 'warning',
        historyApiFallback: {
            rewrites: [
                { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
            ],
        },
        //----------------axios 结合 node.js 代理后端请求
        before(app) {
            // 推荐热门歌单
            app.get('/api/getDiscList', function(req, res) {
                var url = 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg'
                axios.get(url, {
                    headers: {
                        referer: 'https://c.y.qq.com/',
                        host: 'c.y.qq.com'
                    },
                    params: req.query
                }).then((response) => {
                    res.json(response.data)
                }).catch((e) => {
                    console.log(e)
                })
            })
        },
        //----------------axios 结合 node.js 代理后端请求
        hot: true,
        contentBase: false, // since we use CopyWebpackPlugin.
        compress: true,
        host: HOST || config.dev.host,
        port: PORT || config.dev.port,
        open: config.dev.autoOpenBrowser,
        overlay: config.dev.errorOverlay ? { warnings: false, errors: true } : false,
        publicPath: config.dev.assetsPublicPath,
        proxy: config.dev.proxyTable,
        quiet: true, // necessary for FriendlyErrorsPlugin
        watchOptions: {
            poll: config.dev.poll,
        }
    },
    plugins: [
        new webpack.DefinePlugin({
            'process.env': require('../config/dev.env')
        }),
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
        new webpack.NoEmitOnErrorsPlugin(),
        // https://github.com/ampedandwired/html-webpack-plugin
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: 'index.html',
            inject: true
        }),
        // copy custom static assets
        new CopyWebpackPlugin([{
            from: path.resolve(__dirname, '../static'),
            to: config.dev.assetsSubDirectory,
            ignore: ['.*']
        }])
    ]
})

在 CentOS 或 RHEL 中安装 Node.js

在 CentOS 使用 yum 包管理器来安装 Node.js,首先启用 EPEL
软件库,然后运维:

  1. $ sudoyum install npm

一旦您想在 CentOS 中装置新型版的 Node.js,其设置步骤和在 Fedora
中的相同。

 


页面级的管理,把页面中设计到的模块引入进来,和方今页面包车型客车样式引入进来。
JavaScript模块化思想requireJS的选取,跨域设置。比如:页面中用到了iCss3.less,iDialog.less、i德姆o.less。
在iDemo.less中引入:
@import “iCss3.less”;
@import “iDialog.less”;
/*  页面中单独的样式  */

 

在 Arch Linux 上安装 Node.js

Node.js 在 Arch Linux 的社区库中得以找到。所以安装相当粗略,只要运营:

  1. $ sudo pacman -S nodejs npm

 

 

最终经过编写翻译生成供给的CSS文件。

检查 Node.js 的版本

若是你已经安装了 Node.js,你可以应用如下所示的章程检查 Node.js 的版本。

  1. $ node --version

下边关于Node.js的内容你只怕也喜欢:

在 Ubuntu 14.04/15.04 上设置配备 Node.js v4.0.0 

如何在CentOS
7安装Node.js

Ubuntu 14.04下搭建Node.js开发环境 

Ubunru 12.04 下Node.js开发环境的装置配备

Node.Js入门[PDF+相关代码]

Node.js开发指南 高清PDF中文版 +源码

Node.js入门支付指南中文版

Ubuntu 编写翻译安装Node.js

Node.js 的详细介绍:请点那里
Node.js 的下载地址:请点那里


via:

作者:Dan Nanni 译者:strugglingyou 校对:wxy

正文由 LCTT 原创编写翻译,Linux中华人民共和国 荣誉推出

本文永久更新链接地址:

Linux 上设置 Node.js
难点: 如何在你的 Linux 发行版上安装 Node.js? Node.js 是赤手空拳在谷歌(谷歌(Google))的 V8
JavaScript 引擎服务器端…

  1. 获取require.js

2、管理JS文件。
iJquery.js、iString.js、iArray.js、iDate.js、iBrowser.js、iUITab.js、iUIMenu.js、iUIDialog.js、iUIForm.js、iUIDatagrid.js等等。
JS部分大致能够分为两类,一类是常用的操作函数卷入、另一类是基本UI的卷入。

 

依赖jquery.js框架。在时下页面移入iJquery.js。

  requireJS中文网:

页面级的军管,i德姆o.js中用到了
iString.js和iUIDialog.js和页面中对DOM的操作。


JS怎样向java、php等后端语言同样引入呢????????????

  1. 使用require.js

本博客提供一种方法:
借助gruntjs营造,将js文件引入到jade文件中,在将jade文件的称呼转换来js(即改变后缀名)到叁个索引中,在将这么些目录的js文件收缩成生成靶子文件。
例如:
iDemo.jade中包含 iString.js、iUIDialog.js、iDemoDom.js
在i德姆o.jade中引入如下文件:
include iString.js
include iUIDialog.js
include iDemoDom.js

把require.js放入项目标js目录下:

将编写翻译i德姆o.jade
生成iDemo.js,iDemo.js文件中所需求的js了,然后在将以此文件压缩成目的文件。

4858美高梅 2

以此管理JS方法,借用了jade的include成效允许插入文件内容到另三个文件中。

咱俩须求在html页面中引入require.js:

感兴趣的前端爱好者能够尝试啊。。。。。。。

1 <script src="js/require.js" type="text/javascript" charset="utf-8" defer="defer" async="async"></script>

确实很有益于

接下去,在js目录下新建大家的入口js文件,大家把它命名为“main.js”。这些文件就一定于java语言中的main函数,是整套js模块种类的输入,大家在main.js中援引大家须求正视的js文件。

本人水货专长,欢迎我们吐槽和拍砖。。。。。。。。。

4858美高梅 3

哈哈哈,本博客给懂的人写的,你掌握!

在刚刚引入require.js的script标签中添加一行二个data-main属性,并赋值为“js/main”。

 

1 <script src="js/require.js" data-main = "js/main" type="text/javascript" charset="utf-8" defer="defer" async="async"></script>

本条天性的值就是钦点main.js文件的门道,可以省略.js后缀。


 

  1. 哪些计划main.js文件

完了了准备干活,接下去看我们能够在main.js中能够怎么。

(1)写js

咱们得以从来在main.js中编辑javaScript代码:

1 // main.js
2 console.log("main.js被执行");

4858美高梅 4

(2)引入正视模块(require()函数)

– 插足要引入的重视模块和main.js在同样层目录,可以直接选拔模块文件名。

1 require(['firstModule','secondModule','thirdModule'],function(firstModule,secondModule,thirdModule){
2     //模块加载完成后执行的回调函数
3 });

– 假诺大家须要手动配置模块文件路径,使用require.config()方法。

该措施须求写在main.js文件的底部:

1 require.config({  // main.js文件的路径是js/main.js
2     paths:{
3         "firstModule":"lib/firstModule.js"  // 路径是js/lib/firstModule.js
4         "secondModule":"lib/secondModule.js"    // 路径是js/lib/secondModule.js
5         "thirdModule":"lib/thirdModule.js"    // 路径是js/lib/thirdModule.js
6     }
7 });

我们发现那八个依靠的js文件都在js目录下的lib目录下,为了书写简单,大家得以安装“基目录”:

1 require.config({  // main.js文件的路径是js/main.js
2     baseUrl:"js/lib",
3     paths:{
4         "firstModule":"firstModule.js"  // 路径是js/lib/firstModule.js
5         "secondModule":"secondModule.js"    // 路径是js/lib/secondModule.js
6         "thirdModule":"thirdModule.js"    // 路径是js/lib/thirdModule.js
7     }
8 });

咱俩发现那样写有一个题材,就是看重多少个js模块,就得发送五次js请求,require.js针对这么些难点有1个优化学工业具,能够把五个模块合并在叁个文书中,收缩js请求。那么些等笔者精晓之后再独自说…


  1. 接下去,大家看二个完好无缺的行使AMD写法达成的模块加载到调用执行的例证:

目录结构如下:

4858美高梅 5

 1 /*
 2  * js/lib/dates.js
 3  */
 4 define(function(){
 5     let date = new Date();
 6     let outDate = function(){
 7         console.log(date.getDate());
 8     };
 9     return {
10         outDate:outDate
11     };
12 });
13 
14 
15 
16 /*
17  *  js/main.js
18  */
19 require(['lib/dates'],function(dates){
20     dates.outDate();
21 });

推行结果:

4858美高梅 6


 

  1. 何以加载没有行使英特尔规范的模块(没有动用define()函数定义)

主意:使用require.config()方法的shim属性配置。

以jquery.scroll插件为例演示:

1 shim:{
2    "jquery.scroll":{
3         deps:['jquery'],
4         exports:'jQuery.fn.scroll'
5    }
6 }

– deps : 是三个数组,评释该模块注重的模块

– exports : 申明模块外部调用该模块时的变量名

  

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有