鍍金池/ 問答/ HTML問答
命多硬 回答

自己基于promise封裝一下就行了,不用什么都依賴于第三方包。

router.post('/login', async (ctx, next) => {
  const options = {
    url: 'http://xx.55.41.71:9090/tokens',
    method: "POST",
    json: true,
    headers: {
      "content-type": "application/json",
    },
    body: JSON.stringify({
      'userName': 'xxxxxx',
      'password': 'xxxxxx'
    })
  };
  ctx.body = await requestPromise(options);
});

// promise 是異步流程控制的基礎(chǔ),自已封裝一下就行了
function requestPromise (options) {  
  return new Promise((resolve, reject) => {
    request(options, (error, response, body) => {
      if (error) {
        reject(error);
      }
      resolve(body);
    })
  })
}

或者更簡單一點(diǎn),直接用原生的 promisify :

const util = require('util');
const request = require('request');
const requestPromise = util.promisify(request);

router.post('/login', async (ctx, next) => {
  const options = {
    url: 'http://xx.55.41.71:9090/tokens',
    method: "POST",
    json: true,
    headers: {
      "content-type": "application/json",
    },
    body: JSON.stringify({
      'userName': 'xxxxxx',
      'password': 'xxxxxx'
    })
  };

  const {response, body} = await requestPromise(options);
  ctx.body = body;
});
涼心人 回答

https://blog.csdn.net/liuchon... 不太清楚你說的和這個是不是一樣的了。

背叛者 回答

不行的,是需要服務(wù),你隨便本地起個服務(wù)不就行了,方法很多

青瓷 回答

bind對象進(jìn)去就行了
setInterval(test.all.bind(test),1000);

舊顏 回答

有區(qū)別的,``是es6中的模板字符串,而''里面就是普通的字符串

乞許 回答

你命令是"build2": "webpack --config webpack.prod.js",然后你貼的是webpack.common.js的配置,錯誤信息是在./src/xxx/index.js,理解不能

心悲涼 回答

優(yōu)化點(diǎn):

  1. 組件使用Array.map方法優(yōu)化,
  2. componentReciveProps 這個不需要
  3. 在render中減少計(jì)算,使用react 計(jì)算屬性寫法

比如:

if(this.state.safety.length !== 0) {
            this.state.safety.map(function (item) {
                safetyData[item['name']] = item['value']
            })
        }

可更改為

get computedSafetyDate() {
    ...
    }
  1. 減少組件無謂的更新判斷
  2. 減少組件內(nèi)部使用bind, 箭頭函數(shù)(因?yàn)檫@些在js中會重新重建一個函數(shù),降低性能)

暫時就這么多了

短嘆 回答

你這是頁面跳轉(zhuǎn)走了呀?跟vue沒關(guān)系了,那個地址是哪的,空白是因?yàn)樗褪强瞻装伞?br>不想跳轉(zhuǎn)的話可以這樣

const link = document.createElement('a');
link.download = '文件名';
link.href = '下載地址'
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

不過ie不兼容,ie的方式自己去搜一下吧。(比如主動彈出一個新窗口去下載之類的)

怪痞 回答

剛剛看了下網(wǎng)站,app.css中反復(fù)引入了 antd 的樣式

clipboard.png
(粘貼的圖亂了。。湊合看吧。。。)
不清楚是不是配置或者引入存在問題;
或者可以把css 作為外部資源通過link引入,不再項(xiàng)目里 依賴,避免打包進(jìn)css資源中
另外可以開啟服務(wù)端的 gzip 壓縮,減小整體的資源傳輸體積,當(dāng)然上面的是主要問題

故林 回答

Cookie具有不可跨域名性。根據(jù)Cookie規(guī)范,瀏覽器訪問Google只會攜帶Google的Cookie,而不會攜帶Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie。
domain:設(shè)置可以訪問該Cookie的域名,但這個是針對子域名或父域名來說的

你好胸 回答

很簡單的問題花了兩天時間,終于解決了,我F...佛慈悲,咳咳嗯,正經(jīng)說說怎么回事

背景介紹

項(xiàng)目是要部署在阿里云上對外的,簡單說就是要大家在地址欄敲個xxx.com就能訪問到我的網(wǎng)站。而樓主之前一直項(xiàng)目組做本地調(diào)試

假設(shè)本地有兩個Vue工程,如果一個工程被npm run dev,就會跑在localhost:8080,那么80端口被占用了,不能再占一個8080,只能改用8081,做法如題問中描述
但是,當(dāng)發(fā)布到阿里云之后,設(shè)置好的8081不起作用了怎么回事呢?

現(xiàn)在針對同一個阿里云分配的IP地址,樓主申請了兩個域名hehe.com和lala.com,希望訪問hehe.com時對應(yīng)顯示工程hehe,訪問lala.com時,對應(yīng)顯示工程lala

通過nginx配置使同一IP對應(yīng)多個域名和多個項(xiàng)目

其實(shí)我們的所有設(shè)置都是針對開發(fā)環(huán)境(關(guān)鍵字:dev/development),而部署在阿里云上被稱為生產(chǎn)環(huán)境(關(guān)鍵字:production)

那生產(chǎn)環(huán)境怎么還不受代碼控制呢?這個需要展開來講:

我們開發(fā)的工程,需要一步步測試調(diào)試
在開發(fā)環(huán)境下修改一小段code都可以看到相應(yīng)的效果
而當(dāng)你解決所有bug,認(rèn)為代碼perfect的時候,就會npm run build
這是做什么呢?就是把你的項(xiàng)目打包成一個靜態(tài)文件,什么叫靜態(tài)文件?Emmm...就理解成打包成一坨,里里外外都不能改的,可以直接運(yùn)行出你perfect的效果

這個文件在哪里呢?當(dāng)你build之后會看到根目錄下有個dist文件,吶,就是這個,先記住他哦

clipboard.png

然后就可以運(yùn)行了么?Nope
這是個文件,讓它run在阿里云服務(wù)器上我們需要一個代理服務(wù)器nginx,你可以理解為你有個.doc文件,總需要個Microfoft Word來打開的對吧,這里的nginx可以幫你打開靜態(tài)文件讓它run起來

所以

步驟

  1. 你要在阿里云上安裝一個nginx
    這里有教程nginx的安裝配置和使用: https://segmentfault.com/a/11...
  2. nginx有一個配置文件nginx.conf,吶關(guān)鍵來啦,這個配置文件可以幫助我們實(shí)現(xiàn)對應(yīng)域名,對應(yīng)文件的強(qiáng)大功能啦,下面粘貼一小段配置代碼,可以看到hehe工程和hehe.com對對應(yīng)起來了,可以看到lala工程和lala.com對對應(yīng)起來了,
  3. 端口號可以通過修改listen后的數(shù)字來設(shè)置
#第一個服務(wù)器
server {
       #這里的default_server標(biāo)識服務(wù)器為默認(rèn)服務(wù)器,無對應(yīng)域名情況下會對應(yīng)至該服務(wù)器
       listen 80 default_server;
       #和上一句語義相同,上句對應(yīng)Ipv4這里對應(yīng)Ipv6
       listen [::]:80 default_server;
        
       #對應(yīng)的靜態(tài)文件根目錄,把你的hehe工程的dist里面的內(nèi)容放在這里
       root /var/www/hehe;
 
       index index.html index.htm index.nginx-debian.html;
                        
       #對應(yīng)的第一個域名
       server_name hehe.com;
 
       location / {
           # First attempt to serve request as file, then
           # as directory, then fall back to displaying a 404.
           try_files $uri $uri/ @router;
           index index.html;
       }
       location @router{
           rewrite ^.*$ /index.html last;
       }
}
 
 
#第二個服務(wù)器
server {
    #這里應(yīng)該不設(shè)置default_server否則會報錯,注:端口號可與另一服務(wù)器重復(fù)
    listen 80;
    listen [::]:80;
        
    #對應(yīng)的靜態(tài)文件路徑
    root /var/www/lala;

    index index.html index.htm index.nginx-debian.html;
    
    #對應(yīng)的第二個域名           
    server_name lala.com;
        
    location / {
      # First attempt to serve request as file, then
      # as directory, then fall back to displaying a 404.
      try_files $uri $uri/ @router;
      index index.html;
    }
    location @router{
      rewrite ^.*$ /index.html last;
    }
}

遲月 回答

根據(jù)你的想法,你有兩個需要做的。第一,是學(xué)會爬蟲。第二,是學(xué)會建站。很幸運(yùn),這兩個需求,你只需去學(xué)習(xí)一門語言即可,那就是python。第一,python是一門非常優(yōu)秀的爬蟲語言。第二,python擁有很多快速建站的框架,如:Django或者Flask。這里推薦你學(xué)習(xí)一下Flask這個框架,它屬于輕量級的,比較容易上手。

朽鹿 回答
你想要倆行  那你把V-for  寫在"tr"上面 

weex-market里面很多東西很久都沒更新了,根本跟現(xiàn)在的版本都不匹配了,我之前用weex-chart就是,根本沒發(fā)用,但是weex-map沒試過了,你去weex學(xué)院看看,有一個用weex-map開發(fā)的跑步app,里面有用到weex-map,代碼是開源的

別瞎鬧 回答

第一個alert:返回的函數(shù)里面返回this.name,因?yàn)楹罄m(xù)沒有引用,所以getNameFunc直接釋放了,因此這里的this存在丟失問題,這時候直接指向了window,于是alert的是The Window。
第二個alert:返回的函數(shù)里面返回that.name,但是這里的thatgetNameFunc有定義,因此getNameFunc就沒有被釋放,然后存在在作用域中,于是可以通過作用域鏈向上查找that,先找到的是object作用域,于是alert的是My Object。

第二個alert體現(xiàn)的就是閉包的作用,能夠保持作用域鏈的引用,可以在全局環(huán)境下訪問到函數(shù)的內(nèi)部作用域。

默念 回答

你這個問題叫模塊化開發(fā),具體在小程序中可以參考官方文檔:https://mp.weixin.qq.com/debu...
根據(jù)他們的文檔我們可以知道,對于要復(fù)用的JS可以采取2種方式進(jìn)行開發(fā):
方式1:將公共方法定義在App()中,再通過全局函數(shù) getApp() 可以獲取全局的應(yīng)用實(shí)例及其內(nèi)部方法。
方式2:單獨(dú)定義一個JS文件,通過require的方法引入JS。

以上總體介紹了小程序的模塊化開發(fā),接下來針對你的問題回答:
1、你定義的common.js文件不能在wxml文件中引入,應(yīng)該在wxml文件對應(yīng)的js文件中引入common.js。建議不要在wxml中直接操作JS,而應(yīng)該通過對應(yīng)的JS中的data改變頁面的狀態(tài),wxml只負(fù)責(zé)頁面的呈現(xiàn)。補(bǔ)充:js的引入用require,而wxml中引入其他wxml要用import。
2、wxs(WeiXin Script)文件是小程序最近才引進(jìn)的一套機(jī)制,它允許wxml和wxs混在一個頁面中開發(fā),估計(jì)是跟隨現(xiàn)在組件化開發(fā)的大潮流吧。wxs 與 javascript 是不同的語言,有自己的語法,并不和 javascript 一致。建議你先不要用wxs這東西,它是騰訊自己的一套類似JS的語法。

逗婦乳 回答

vue說他們?yōu)榱私档统叽鐪p少重復(fù),并沒有提供ajax的相關(guān)內(nèi)容.你可以使用自己熟悉的ajax庫或者直接用原生的form去提交表單.
參考一下vuejs的官方示例(axios)
https://cn.vuejs.org/v2/guide... 偵聽器一節(jié)

朕略傻 回答

圖片描述

你好,我的思路如下,有不清楚的歡迎交流。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    .box{
        width: 100px;
        height: 30px;
        line-height: 30px;
        border: 1px solid #ccc;
        text-align: center;
        font-size: 14px;
        position: relative;
    }
    .box:after{
        content: "";
        height: 1px;
        width: 100%;
        background-color: #fff;
        position: absolute;
        bottom: -1px;
        left: 0;
        display: none;
    }
    .con{
        height: 100px;
        width: 300px;
        border: 1px solid #ccc;
        display: none;
        position: absolute;
        left: -1px;
    }
    .box:hover:after{
        display: block;
    }
    .box:hover .con{
        display: block;
    }
    </style>
</head>
<body>
    <div class="box">
        <span>我的購物車</span>
        <div class="con">
            購物車的內(nèi)容
        </div>
    </div>
</body>
</html>