egg学习——简单实例

最近在储备egg,因为网上的资源太少了,自己也是纠结了好几天,解决了无数的错误,才排除万难完成了这个小demo。
安装就不再赘述了,下面直接介绍:该demo的功能是将页面输入的内容保存到数据库中

  • 该demo使用的模板引擎为nunjucks,又因为要将文件保存到数据库中所以需要引入MySQL的插件,于是config/plugin.js文件内容如下
//config/plugin.js
exports.nunjucks = {
    enable: true,
    package: 'egg-view-nunjucks'
};

exports.mysql = {
	enable: true,
    package: 'egg-mysql',
};
  • config/config.default.js文件在原来的基础上更改如下
module.exports = appInfo => {
	const config = {
	    view: {
	        defaultViewEngine: 'nunjucks',
	        mapping: {
	            '.tpl': 'nunjucks',
	        },
	    },
	    mysql: {
	        client: {
	            host: 'localhost',
	            port: '3306',
	            user: 'root',
	            password: '',
	            database: 'test',    
	        },
	        app: true,
	        agent: false,
	    }
	};
	config.keys = appInfo.name + '_1489393729180_4559';
	return config;
};

app文件夹中的文件,app/public文件夹中存放js或者css等静态文件

  • app/router.js
module.exports = app => {
    app.get('/', 'home.index');
    app.get('/add/:data','home.add');
};
  • app/controller/home.js文件
module.exports = app => {
	class HomeController extends app.Controller {
		* index() {
			yield this.ctx.render('index.tpl');
		}
		
		* add() {
			const data = this.ctx.params.data;
			const result = yield this.service.mysql.add(data);
			this.ctx.body = 'success';
		}
	}
	return HomeController;
};
  • app/view/index.tpl
<html>
	<head>
		<title>Egg Demo</title>
		<link rel="stylesheet" href="/public/css/bootstrap.min.css">
	</head>
	<body class="container">
		<input type="text"><br />
		<button class="btn btn-success">上传到数据库</button>
		<script src="/public/js/jquery.min.js"></script>
		<script src="/public/js/index.js"></script>
	</body>
</html>
  • app/public/js/index.js
$("button").click(function(){
    var data= $("input").val();
    if(data){
	    $.ajax({
	        type:'get',
	        url:'/add/'+data,
	        success:function(data){
	            if(data == 'success'){
	                alert('上传成功!');
	            }
	        }
	    });
    }
});
  • app/service/mysql.js
module.exports = app => {
	return class User extends app.Service {
		* add() {
		   const data = this.ctx.params.data;
		   const result = yield this.app.mysql.insert('demo',{'data':data});
		   if(result.serverStatus == 2){
			    return "success";
		   }else{
		       return "fail";
		   }
		}
	}
};

以上既是这个简单demo的全部代码,如果错误请指正

### 使用 `electron-egg` 实现监听鼠标进入窗口事件 在 `electron-egg` 应用程序中,可以通过结合 Electron 的原生模块和浏览器渲染进程中的 JavaScript 来实现监听鼠标进入窗口的功能。具体来说,在主进程中创建 BrowserWindow 并加载页面之后,可以在渲染进程中利用 DOM 事件处理机制来捕获鼠标的进出行为。 对于想要捕捉到整个应用窗口范围内的鼠标移入/移出动作,则可以考虑使用全局的 mouseover 和 mouseout 或者mouseenter/mouseleave 事件[^1]: ```javascript // 渲染进程 (renderer.js) window.addEventListener('mouseover', () => { console.log('Mouse entered the window'); }); window.addEventListener('mouseout', () => { console.log('Mouse left the window'); }); ``` 为了更精确地控制这些交互逻辑,还可以借助于 Electron 提供的一些 API 方法以及属性来进行辅助判断,比如通过 `webContents.getFocusedFrame()` 获取焦点所在的 frame 对象或者调用 `BrowserWindow.fromWebContents(contents)` 返回拥有给定 web contents 的 browser window 实例[^2]。 此外,也可以尝试将上述代码片段稍作修改,采用 mouseenter 和 mouseleave 替代 mouseover 和 mouseout ,以避免当光标仅是在子元素之间切换时触发不必要的回调函数执行。 值得注意的是,这里展示的例子主要集中在前端视角下的解决方案;而在某些情况下,可能还需要配合主进程里的相应配置才能达到预期效果——例如设置合适的窗口参数或注册额外的消息传递通道等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值