Node.js 如何在节点js上创建传单tileLayer对象并将其作为express API的响应发送
所以我现在面临的问题是,我能够在NodeJS中创建传单对象,并使用express将响应作为对象发送。现在这个api工作正常,但是我无法在前端使用api响应 在API的后端,我使用express、传单和模拟浏览器(用于在后端模拟浏览器)npm模块,但如果我在前端创建相同的对象,则响应不同 我应该如何在NodeJS中创建与前端相同的对象,并在简单的网页上使用它 我的api的代码如下所示:Node.js 如何在节点js上创建传单tileLayer对象并将其作为express API的响应发送,node.js,express,leaflet,Node.js,Express,Leaflet,所以我现在面临的问题是,我能够在NodeJS中创建传单对象,并使用express将响应作为对象发送。现在这个api工作正常,但是我无法在前端使用api响应 在API的后端,我使用express、传单和模拟浏览器(用于在后端模拟浏览器)npm模块,但如果我在前端创建相同的对象,则响应不同 我应该如何在NodeJS中创建与前端相同的对象,并在简单的网页上使用它 我的api的代码如下所示: const MockBrowser = require('mock-browser').mocks.MockBr
const MockBrowser = require('mock-browser').mocks.MockBrowser;
const mock = new MockBrowser();
global['window'] = mock.getWindow();
global['document'] = mock.getDocument();
global['navigator'] = mock.getNavigator();
const express = require('express');
const L = require('leaflet');
const app = express()
const port = 3000
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
let overlay = L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=your_mapbox_access_token', {
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'mapbox/streets-v11',
accessToken: 'your_mapbox_access_token'
});
app.get('/', (request, response) => {
response.send({ data: overlay })
});
app.listen(port, () => {
console.log(`App running on port ${port}.`)
});
首先请注意,任何http请求都只传递字符串。这样的字符串可以对序列化数据进行编码。但不是JS对象。@ghybs这意味着在我的例子中,我们不能反序列化通过http发送的对象文本?确实如此。如果你检查你的网络响应,你应该看到你的对象试图序列化它,很可能丢失了很多部分。这是一个极端的情况,一般情况下,你不能在两个映射之间共享一个层-请参阅
// after setting up leaflet environment is JS
var mymap = L.map('mapid').setView([51.505, -0.09], 13);
function mapit(){
$.ajax({
url: 'http://localhost:3000/',
success: function(res){
res['data'].addTo(mymap);
}
});
}