前端 :Nuxt.js/vue-router/ Vuex/ ELement-ui
后端 :Node.js/Koa2/Koa-router/Nodemailer/Passport
HTTP通讯 :Axios
数据支撑 :Mongoose/Redis/高德地图web服务api接口
先安装npx
npm install -g npx
然后用npx安装模板
npx create-nuxt-app project_name
cd到那个目录,启动
cd mt-app
npm run dev
由于无法使用import命令
"dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node",
"build": "nuxt build",
"start": "cross-env NODE_ENV=production node server/index.js --exec babel-node",
{
"presets":["es2015"]
}
cnpm i babel-core babel-preset-es2015 babel-cli
使用sass
cnpm i sass-loader node-sass
项目要求:
遇到的问题:
解决:可以在settimeout里面的函数用箭头函数来表示;
或者把data里的this暂时存起来_this=this;
导入数据库
mongoimport -d dbs -c test pois.dat
ssr:服务端直接打在网页上的源码,不需要重渲染
拼音库
可以实现那汉字转拼音
npm i js-pinyin
js按照数组里元素的首字母排序
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
blocks.sort((a, b) => a.title.charCodeAt(0) - b.title.charCodeAt(0));
改json数据结构映射关系是很好改的,改模板结构是很痛苦的
产品列表的智能排序还要重新实现
JavaScript判断元素是否在工作窗口内
function isInViewPortOfOne (el) {
const viewPortHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight ;//窗口可视高度
const offsetTop = el.offsetTop;//元素顶部高度
const offsetHeight = el.offsetHeight;//元素高度
const scrollTop = document.documentElement.scrollTop;//滚动距离
//判断是否在工作窗口内
const top = (offsetTop+offsetHeight )- scrollTop
if(top>0&&top<viewPortHeight){
return true
}
else{
return false;
}
}
地图如何实现自动定位
380+170
将 list从头开始遍历,直到找到比他大的scollTop,就return
将第一个比它大的point存入vuex里。
然后滚动监听,监听point变化了,就在map组建立传入vuex中的point,然后更新地图
路由:购物车不是先前存在的,只是在商品详情页点击购买的时候用异步方法新创建的购物车
抓取别人的评论是会被起诉的
首页
编程式导航路由传参
this.$router.push({
path: "/",
query: { name: name }
});
//接收参数
this.$router.push(`/products?keyword=${this.$route.query.name}`);
npm run build
需要上传的文件
.nuxt目录
package.json
nuxt.config.js
static
server目录
[
{
"name": "mt-app",
"script": "npm run server",
"env_dev": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
}
}
]
upstream nodenuxt {
server 127.0.0.1:3000; # nuxt 项目监听PC端端口
keepalive 64;
}
server {
#需要映射的端口和域名
listen 80;
server_name **************.cn;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Nginx-Proxy true;
proxy_cache_bypass $http_upgrade;
proxy_pass http://nodenuxt;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
配置完之后,发现使用域名可以成功访问,但是出现了资源跨域的问题。
5. 在nuxt.config,js配置文件里面做一下配置
/*
** Nuxt.js modules
*/
modules: [
'@nuxtjs/axios',
'@nuxtjs/proxy'
],
proxy: [
[
'/api',
{
target: 'http://cp-tools.cn/', // api主机
pathRewrite: {
'^/api': '/'
}
}
]
],
axios: {},
使用接口代理获取资源
就没有出现跨域的现象了